From what I've read, the weakness is in the codecs provided within Android by PacketVideo. From the following, you can see that we can decode all sorts of stuff, but our video encoding is quite limited:
Android Supported Media Formats | Android Developers
PacketVideo
As you can see, the MPEG 4 (Part 2) encoding for our Evo videos was added - by HTC.
For my own part, if my further reading is correct (and this is worth everything you're paying for it, but I did _TRY HARD_ to get this right), we'll see a change to that Android codec list when a switch is made from PacketVideo to CoreCodec in 2.2.
The CoreCodec guys have been working on the native development kit since April 2009 and have been hampered by some of the fundamental limitations in the Android architecture that, according to CoreCodec employee speaking on behalf of their company on their forum, will be appropriately changed with Froyo.
Meanwhile - no need to throw out the 30 fps cap buster - the geniuses at XDA have that fixed for Epson and Novatel screens, HDMI working, camera working. HTC would do well to simply buy those changes if they don't have them already. (LOL on them doing that, but it's _possible_.)
Basically, the sensor and lens on the iPhone are said to be better - but a good H.264 (MPEG 4 Part 10) encoder would work wonders for us. Others are calling for a higher bitrate with the existing codec, but my personal opinion is that's a no-win scenario.
Meanwhile - we're waiting for Godot.