Instead of just complaining about Android, I decided to do something about it. It’s open source, eh? I dove into the code and tried to figure out why the Browser was so jumpy. I discovered that a single case statement controls a lot of the motions. It checks if the drag threshold is reached and if so, it then continues with the normal drag code. Unfortunately, it doesn’t reset the drag amount so you suddenly get this big jump when you start dragging. If you reduce this by a large factor (I chose 80% after some testing), the jump is removed and you’re still able to drag quickly.
Here’s my bug report including a code patch for fixing it: http://code.google.com/p/android/issues/detail?id=4262
A better solution would be to unravel how motions are tracked and put the drag check in a different state from the drag start. My coding ability is way too rusty for that.