For example, Android's component-based app architecture runs very deep in Android implementations. If you subvert it, or plaster over it with an abstraction, you lose the ability to minimize your app footprint by having relatively small components "destroyed" or swapped out of memory in Android's unique approach to making Java memory management work across component and process boundaries.
Windows 8 for mobile devices is yet another distinctive OS, with a unique kernel and similar, for still very distinctive managed language runtime, plus legacy compatibility.
We're in an era of OS and managed language runtime innovation. Each one is striving to provide the optimal feature set, and that often involves the way in which apps and components of apps communicate and cooperate. plastering over the semantics of those large and deep architectural differences is going to result in a lowest common denominator result.
With titanium the vast majority of your applications logic is un-touched between platforms and you generally have about 50% reusable front-end code.
If you structure your application properly, swapping out UI pieces by platform is simple.