...then all applications might run on all smartphones. Your question is perfectly reasonable, as is your desire for cross system compatibility.
But they aren't all the same. The architecture, Infrastructure, hardware and software are all different and so would require the developer to write multiple versions and that isn't what developers want to do. Let's look at those issues.
Architecture. From the outside, most smartphones "look" more or less the same - give or take an Apple lawsuit or two! But the internal architecture is quite different and there is very little standardization. By architecture, I mean the memory structure and organization, the processor configuration and instruction set, the graphics chip and the system bus structure. There are basically four architectures at large today, Blackberry, Apple iOS, Google Android and Microsoft Windows Phone. Some applications have been ported to two or more but most haven't.
The approach to infrastructure is quite different across the four platforms. Blackberry achieved its pre-eminence in the business world because it controlled the infrastructure environment. Apple has done the same and that is why businesses that have become disenchanted with Blackberry are choosing Apple over Android - the environment is controlled and heavily policed by Apple. Thus business can be assured of quality, consistency of experience and support, even though some of the Android and Windows Phone functionality may be superior (I'm not going to define "superior" so don't throw rocks!).
Google and Microsoft are much more open and while that offers greater flexibility, it also allows incompatibility and inconsistency to creep in. What they don't control is the hardware design and manufacture or the customization and enhancements Android and WP builders include.
In terms of the hardware, the three basic elements are the screen, the CPU and the GPU. Just look at standard desktop PCs, for example, there are many different screens available, all with different drivers and this for an essentially standardized interface. Come to smart phones and we find Apple Retina screens, HD and non-HD screens, all with different resolutions and drivers. Looking at the CPUs, three of the main options are ARM, Nvidia Tegra and Apple's customized processors; there are others but you get the idea. All of these have different instruction sets and memory structures, which would have to be separately programmed by some means. Similarly the graphics chip, which in some low end models relies heavily on the CPU and in others may be an extremely high performance self-contained unit.
The interface to the hardware is the software. Apple and Blackberry provide all their own operating systems and application Programming Interfaces (APIs) and Apple in particular have a very high standard requirement for applications before they are accepted for the Apple Store. Both also move the operating system along in a consistent fashion and provide the backwards compatibility that allows older applications to run on the newer versions of the operating system.
Google and Microsoft are, again, more open and this can affect the compatibility and consistency of experience as the operating systems move forward. For example, many Android devices are still being sold with the Gingerbread version of the operating system (2.3), while the operating system has moved on to Ice Cream Sandwich (4.0) in general circulation and 4.1 in later models. This allows for more rapid development of the smartphone experience but leaves some models behind. The Microsoft hardware requirements for Windows Phone 8 effectively made obsolete all existing Windows Phone 7 models.
Could all this be resolved? Sadly, not easily. What would be really nice would be an ANSI standardized programming language for smartphones, for which the manufacturers would provide compilers to generate the required machine code. That isn't going to happen, so the alternative is some kind of virtual machine emulation - one might say like Java but would you really want to go down that route?
It's true that smartphones have become much more powerful, who would have thought even 5 years ago, that we'd be carrying so much power and flexibility in our pockets? A lot of that power and functionality comes from writing applications to exploit the specific platform architecture and that is inconsistent with cross-platform applications.
But then, never say "never"!