This is a common problem with datasources that rely on child items of the datasource.
The best way I have found to resolve this, is by either running an
Incremental publish on the site, or changing the workflow to run scheduled publishes.
If your content editors need to run ad-hock publishes, an incremental publish will catch everything in the publish queue. That is everything that has been edited since the last publish was run. So even tho the child items might not be picked up by the related items, because a content editor has changed them, they would be in the publish queue and this will pick them up.
The downside is that, ad-hoc publishes clear the entire html cache every time. So this might not be the best option if you have a lot of edits happening all the time.
A better option might be to use something like SiteCron to schedule site wide incremental or smart publishes at specific times. Say, every hour or twice a day. That might lessen the amount of cache clears that happen on the site.
Of course, if you don't do that many edits, ad-hoc publishes might be fine. But make sure you do an incremental publish of the site, and not a related publish of the item so that it catches all the datasource item children.