Years ago it seemed to me that Symbian was a dead-end. Just reading about the programmer APIs was enough to convince me of that.
Motorola finally realized that P2K and their other proprietary stuff wasn't going to cut it for the future. Most of these mobile phone OSs were designed for very small, resource-constrained devices. Which is fine... that's all that was viable in the market at the time. But they weren't designed to scale up.
For example: Android uses Linux, and it has had MP support for a long time (late 1990's?). Even as of five years ago, many people would have thought that a phone with a multi-core CPU is crazy. Why would you need all that power (and power consumption)? And here we are in 2011, with the Nvidia Tegra 2 and other CPUs in shipping phones. For most of those phone OSs, adding multi-core support would be a multi-year re-write. Linux? No problemo.
And beyond that, there is database support, and support for various Internet-based protocols (chat, radio, web, etc.). And what is needed for that is a really solid TCP/IP stack. I've seen (and done) things to a TCP/IP implementation to get it running on a small device. It wasn't pretty. Or high performance. It will 'work', but not for heavy duty use like you'd need on a smartphone these days.
Edit: grammar. Mention of TCP/IP stack.