I'm working on addressing this challenge myself and I share your frustration, though I think I understand why it works this way OOB.
The content being rendered in CSWPs isn't actually "within the page" in the publishing site - it is all being retrieved and rendered client-side through Javascript. Basically, I think the limitation is fundamentally that the SP search crawler isn't looking at the page as it will appear client-side (where the JS has been executed and the CSWP content exists), but rather the page as it does appear server-side (where the JS hasn't been executed and the CSWP content doesn't exist).
I can actually see this being a benefit when CSWP is showing the same results on multiple pages in a "secondary content" ("related items") type scenario, but it's definitely a drawback when using CSWP to render what is effectively the "primary content" on a page.
I'm as concerned (if not more concerned) about public crawlers (Bing, Google, etc.) not being able to read the content within the CSWPs, as I am about SP's own internal search.
I think I understand that the CSWP detects when a public search crawler hits the page and automatically renders the content server-side, which means the crawler should see the CSWP content as "part and parcel of the page" ?...? Wonder if there is a way to force SP search to "see" the site collection in the same way or perhaps, inversely, configure the site collection to treat SP search like it does public crawlers?
Anyway, I'm looking at a couple of (time consuming) options, wondering if you or anyone have tried any of them before I make the investment of energy:
Worst case, unfortunately... I guess...
- Actually putting the content in "real pages" on the publishing site. This will, unfortunately, mean opening up (some degree of) write access to the publishing site to nearly two hundred people, rather than the half dozen we were aiming for by leveraging XSP. This will address the search visibility issue.
- Optionally: Continuing to use the XSP catalog as a metadata index of those "real pages" and continuing to leverage CSWP for "content reuse" capabilities.
Sorry this isn't much of an answer, but I'm still trying to get enough karma to comment :)
Hope all is well,
Nick