Apple have really done their users a disservice with iOS4 on older phones. Given that the older models cannot use any of the new features (apart from the useless and unattractive UI changes) there is no reason the older phone should have such an awful performance degradation.
It is almost as if this line of code is sitting inside the iOS4 source code...
if deviceVersion != "iPhone4":
WaitSomeSeconds(Random() * 10)
In fact... I'm willing to bet it is. Apple is the new Microsoft, using shady business methods in an attempt to force users to upgrade.