Very clever workaround.
For those who didn’t understand how it works:
-
The page content is wrapped in a 100% height, so the body doesn’t actually have a scrollbar
-
The overlay background (separate from the page content) does not have a height, so the child overlay-content element takes the height of the parent (body).