This behavior was still repeating in 5.5.0, I notice a cryptic "What's New" in 5.5.1 that indicates it might have been finally addressed.
At the core, what is happening is that a page record has both a reference to its ParentId, and a Level code (0-based index) that tells what level hierarchy it should be. The Admin Pages module looks at the Level apparently, not attempting to rebuild the hierarchy - apparently an attempt at optimization.
We have noticed that if you use the Admin Pages module exclusively no inconsistencies result between the actual hierarchy chain and the Level index. However, using the RibbonBar Current Page Move command, situations seem to happen to corrupt the Level with regard to the changed ParentId. This SQL statement finds the pages that are corrupted (we had dozens, including some we'd forgotten about):
FROM Tabs t JOIN (SELECT TabId,[Level] FROM Tabs) p
WHERE t.[Level] != (p.[Level]+1)
It is trivial to see what level is expected and what it actually is (in the two Level columns). When the Level is corrupted so that a child page's Level is less than its parent's, the Admin Pages does not display the child
even though it is actually present and linked properly with the ParentId (in 5.5.0).
The data fix is to simply readjust the Level field in the Tabs table directly for the corrupt child pages. Then restart the application (in case of caching). Of course, the code should be fixed to prevent the possibility of such corruption in the first place (transactions, anyone?).