iPhone 4 is bit problematic when it comes to rendering, as it contains a very high resolution display with a not very good GPU. So when it comes to pushing view-heavy animations, it can slow down a lot. The 3GS is technically slower, but it only has to push a 480x320 resolution, so it is much less stressful.
I would recommend optimizing your views, setting as many of them as possible to opaque and playing with the animation options to lower the performance cost as much as possible.