WebOS/Bada/Android(Linux), WindowsPhone(CE) and iOS(Mach) are all very different. Each platform uses its own string class, threading logic and UI layer. The lack of standardization is almost bizarre when you factor in HTML5. This results in lots of developers sitting on the fence.
Five platforms, five compilers, five api´s... yet everything runs on 32bit ARM, uses ANSI/ISO C-like syntax and reads UTF8 over HTTP.
I tried writing something that was multiplatform with HybridKit and it was almost impossible. Even stupid code generation might be too much. So solid design and custom code seems like a safe bet.