It turns out I'm not the only one to discover this problem…
…but none of those old, locked posts has a proper solution offered, only workarounds.
We'll get to the solution in a moment, but, for anyone who likes to solve little puzzles, let me first share these screenshots which show the problem and solution graphically:
The Problem
The Solution
Spot the difference?
✅ Adding a paragraph after the page break fixes it!
What's going on here?
I believe this demonstrates a subtle rendering bug in Google Docs. Note how the added paragraph marker, despite being to the right of the page break (and, therefore, theoretically existing on the next page (page 2) that new marker appears on page 1, stuck to the page break.
Why? Why? Why?
In case some relevant Google employee happens on this post, here's a hunch that might put you on the fast track to finding and eliminating this bug! 😎
Guessing it's something to do with the way Paragraph markers carry formatting information for content to their left, while Page Breaks affect content to their right. This bug exists in that liminal space between. By having business logic that uses both left-of and right-of reasoning, different components can end up with subtly different interpretations. The renderer clearly interprets the header as being on page 2, as required by the page break, while the Table of Contents seems to think that all content before the first paragraph marker exists on the previous page, page 1. Inserting the content-less paragraph keeps the print renderer happy, since the empty marker doesn't print, and allows the ToC's rule to suddenly work as expected.