You really nailed it with that first sentence. I can't tell you how many times I've done custom layout operations with absolute positioning that should be slow because they're being executed entirely in JS, but are much faster than the built-in layout operations. A good case in point is YouTube and its fixed header and left-hand menu: IE11 and Edge both have real problems with these fixed elements bouncing when scrolling down on the page. This is a trivial thing to implement without any visual artifacts when using absolute positioning.
I think some of it is also that the web has numerous things about it that are fundamentally expensive operations, going back to things like "the default table sizing algorithm reacts to the flow of the content within it, which also depends on how the table decides to format it". It's not hard to create a pure HTML page that has no interesting images or scripts or anything, but still is fundamentally slow to render. (You probably wouldn't want to write it by hand, but I've accidentally written programs that output such pages over the years.)