Non è così semplice Devil... le parti principali del programma possono anche essere uguali, ma questo può essere vero solo se sviluppato in Java o .NET, cosa che sappiamo non essere possibile su iOS, e che per Windows Phone devi per forza scrivere in .NET, e che non puoi farlo con Android e lì devi usare Java...

Effettivamente credo l'unica interoperabilità tra i cellulari sia solo tra BlackBerry, Android e Symbian che permettono di usare Java.
Però si parla sempre della parte "centrale del programma", quella che elabora le informazioni. La parte del programma che si occupa dell'interfacciamento con l'hardware o con i servizi di connessione deve avere uno sviluppo diverso per ogni piattaforma, perché ognuno lo fa in modo diverso.
In questo caso però, in cui devi usare linguaggi di programmazione diversi, anche se la logica del programma è la stessa, è possibile che alcune implementazioni abbiano subito delle modifiche, magari per una versione c'è un bug dovuto a una svista, per andare sul banale e non attaccare la competenza dello sviluppatore.