I agree with this.
Android is an incomplete OS and top-end Android phones don't, or rather can't, use the full potential of the hardware; this is especially true for Samsung, whose phones in real life tests, don't live up to the hype of the benchmarks simply because of inefficiency. Even then, the likes of the underwhelming Snapdragon chips are hardly anything to brag about.
The iPhone, for all practical purposes, is not much different.
You can squeeze a few more clocks out of an i-phone program because you know specifically what chipset you are dealing with - but that's fairly negligible.
All of the phones can have exceptional battery life and video quality.
Though if you want to get into hardware specifics - snapdragon/krait are bluntly superior in terms of architecture to Tegra.
The catch is that you have to be a little more creative with your programming (which is not something modern programmers are used to). Careful management of integer and floating point assignments needs to be made. Further, use of paradigms like OpenCL is a must on mobile platforms as they have exploited parallel architectures far more so than the desktop/PC environment.
The integration of a series of digital signal processors (Hexagon) makes for some very powerful options, as well.
Though, again, it's arguing technicalities with only cursory practical impact.
Most of the script kiddies writing games these days couldn't tell you why you should conserve floating point entries or compile special executable files for each set of hardware (literally - you click a button in the compiler, say "go" and walk away) - particularly when you're looking to properly compare processor performance.