El Mono para Android es de pago, y además eso de "programa una vez y ya te vale para IOS y Android", es mentira. Ya que si es para Android tienes que usar los controles de Android y si es para IOS tienes que usar los controles de IOS. ¿Qué es lo que no tienes que reprogramar? Todas las funciones que sean genéricas del tipo te paso un dato y me devuelves otro dato. ¿Cuantas funciones has programado alguna vez en Android en las que no intervenga directamente un control? Pues eso.
Además, le ocurre lo mismo que a Basic4Android, que se programa muy rápido pero te deja muy limitado en cuanto a posibilidades. Con Mono4Android sólo puedes usar los controles de Mono4Android, si te quieres coger una librería para Android que tiene un control chulísimo que lo quieres poner en tu app, no podrás.
Es una solución muy buena para la gente que sabe C# y no quiere aprender Java, o no quiere aprender la lógica de Android, pero a la larga es una solución muy mala. Yo soy programador de C#, con 10 años de experiencia, y en su día pensé en Mono4Android y Mono4IOS. Al final me ha resultado muchísimo más productivo aprender Android (Java ya sabía) y aprender IOS (Objective-C he tenido que aprender, pero sabiendo C++ y Java no es nada complicado), ahora programo en los 2 entornos con su lenguaje natural y le saco muchísima más punta de la que le sacaría con Mono.