This does not demonstrate a bug in the position utility, only that when you ask the position utility to do something for you, you sometimes need to deal with the consequences. As useful as the utility is, it does not in all instances absolve you from learning css and how it works. Neither is it always the best solution, sometimes css alone is.
To your example:
The same thing happens if you don't use the position utility (or any JavaScript at all for that matter) and just position the elements with css:
That's how position: relative works in css. The height of the parent element stays the same as if the child elements were in their original positions. You can imagine them as actually occupying their original positions and just displaying themselves nudged over a bit.
Back to using the position utility. You could use a position:relative parent and position:absolute children instead:
but that shrinks the parent way down to the height of the non-position:absolute child, in this case the header. So better would be to use floats:
At this point I can't see any reason to use the position utility for this layout. Look how far css alone gets you with floats: