Ein kleiner Nachteil von Xamarin ist aus meiner Sicht, dass Du auf Plattformen, die nicht .NET unterstützen dafür eine Emulationsschicht installieren mußt. Unter iOS monotouch, bei Android Android.Views und unter Windows XAML oder direkte
API. Ein absolutes Muß ist die 100% Trennung von Oberfläche und Code. Dahingehend wäre Firemonkey schon eine tolle Sache, aber dort liegt der Hauptaufwand darin, dass man die Fehler und Unzulänglichkeiten dieses Frameworks erkennen und Workarounds programmieren muß. Zudem wird momentan nur iOS unterstützt.