The Category method should work, but the list of pages will be "flat" (that is, no child/parent relationship)
- Three groups of users (GROUPA, GROUPB, GROUPC)
- Three categories (CategoryA, CategoryB, CategoryC), with the correct permissions so that only GroupA can view pages in CategoryA, etc.
- A module with the CATEGORY plugin (for all three categories).
As long as the permissions are set properly, users will only see pages in their category. And if a user belongs to multiple categories, they'll see the pages from all the categories.
As you add new pages to the categories, they should appear in the module automatically (though, you may need to adjust the overall cache, as well as the cache for the module.