How can I build a query that returns all attachments of a page and it’s children pages?

The posts query is not recursive by nature. And I don’t think that post_parent accepts multiple IDs, so you will likely need to loop and run this for multiple pages or play with query filters to do this in less requests (if performance becomes an issue).