Got a little further by looking at the SQL queries run. Seems I found a bit more info:
The page containing the Page field is queried like this: (seen in the debug trace when on this page in the Backend) SELECT false AS isLoaded, pages.templates_id AS templates_id, pages.* , pages_sortfields.sortfield, (SELECT COUNT(*) FROM pages AS children WHERE children.parent_id=pages.id) AS numChildren, field_title.data AS `title__data`, GROUP_CONCAT(field_card_group.data SEPARATOR ',') AS `card_group__data`, field_fb_success.data AS `fb_success__data`,field_fb_error.data AS `fb_error__data`,field_max_checkin.data AS `max_checkin__data` FROM `pages` LEFT JOIN pages_sortfields ON pages_sortfields.pages_id=pages.id LEFT JOIN field_title ON field_title.pages_id=pages.id LEFT JOIN field_card_group ON field_card_group.pages_id=pages.id LEFT JOIN field_fb_success ON field_fb_success.pages_id=pages.id LEFT JOIN field_fb_error ON field_fb_error.pages_id=pages.id LEFT JOIN field_max_checkin ON field_max_checkin.pages_id=pages.id WHERE pages.templates_id=61 AND pages.id IN(1341) GROUP BY pages.id
The part:
GROUP_CONCAT(field_card_group.data SEPARATOR ',') AS `card_group__data`
is what returns a full list of id's that are referenced... so far so good, got 210 id's
But the next query that is run is:
SELECT id, templates_id FROM pages WHERE id IN(1337,1338,1353,1399,1400,1401,.. etc
This is where not all id's from the previous query are included in the IN ( ) part. it only includes 170 id's
Hope anyone has an AHA moment... not sure why this is happening... still going through the processwire Core to find out where things are done.