This page makes it pretty clear: http://people.mozilla.org/~jmuizelaar/p/nwn-tear/builder.php
The image at the bottom makes it pretty easy to see. None of the other browsers have this problem.
This isn't a regression, FF 3.5 and 2.0 (and I'm guessing 3.0) all have the problem.
The problem is that scrolling isn't visually atomic with painting. We blit and then paint. As far as I know the only solution is to have a persistent back-buffer, so scrolling can copy within the backbuffer, then we can paint into the backbuffer, then we can blit the whole backbuffer to the screen.
I had a look at what some of the other browsers do on this page:
IE seems to draw the entire screen using 150x[window width] bands. Tearing at the band boundaries is visible when I slow down BitBlt but not when it runs at normal speed.
Opera seems to draw the entire screen with an AlphaBlend call?
Safari may do the same with BitBlt.
None of them seem to use ScrollWindow or ScrollWindowEx
Sounds like they're all using some kind of retained backbuffer.
Maybe bug 700867.
The underlying issue in this bug was fixed when we made scrolling layer-based.