Because of inline css and different fonts on different os-es and generally no guarantees about render size. In short, you have no idea how big a block is without rendering it.
https://www.w3.org/TR/css-contain-2/#content-visibility
I think the answer to the GP's question is that the browser does know how to compute this before starting the render pass, but the additions to the spec that allow for placing fences around the layout- and style-related containment was too new for all browsers yet, so the default is to assume all rendering is done, and the HTML/CSS author can opt in to turning this on (which in early days may have had the risk of bugs in implementation or inconsistencies across browsers).