Sun's clever design. The more I understand, the better I get.
So it's not a bug, but a design decision.
Why should there be more overhead - I think you do not understand how Java handles its memory.
If you repaint the Swing stuff every frame, the paint(methods) of each component have to be invoked, and there are generated objects in this methods.
If you invoke this methods frequently, the GC is quite stressed - so to be not a performance bottleneck it enlarges the heap.
Thats it, no magic at all ;-)
PS: Don't think to be clever