It's interesting to see Jobs openly state the "most important reason" for prohibiting Flash:
We know from painful experience that letting a third party layer of software come between the platform and the developer ultimately results in sub-standard apps and hinders the enhancement and progress of the platform.This directly echoes what John Gruber wrote earlier this month in "Why Apple Changed Section 3.3.1". As a developer, I really understand this. And I'm not gloating because I took the time to learn Objective-C and Cocoa Touch. I've worked in enough languages, frameworks and platforms over the years to know that it's critical to understand a platform at its base level, even if you do most of your work in a higher level language or framework.
I think part of the controversy is due to how good the iPhone and iPad actually are. Most users are blissfully unaware of how limited the CPU and RAM on their iPhone are. Apple has delivered a user experience that rivals (and with iPad even exceeds) that of a fully powered PC or Mac system.
High level layers like Flash are woefully inefficient. Simple calculations in Flash can be a hundred or even a thousand times slower than in a lower level language like Objective-C. There's so much processing power available in a modern desktop or laptop machine that this inefficiency is rarely noticed. It's a much different story for your iPhone however.
Flash developers seem particularly tone deaf to performance issues. I think we've all seen web-based Flash apps that take forever to download, often showing you some annoyingly wizzy progress meter while you stare at a blank screen for two minutes. Of course, for the Flash developer loading it directly on his development machine, it appears in seconds. Now imagine this experience on your iPhone.