Ventajas, usar un lenguaje concreto en vez de Java o Kotlin que son los lenguajes oficiales. Inconvenientes todos los demás. Lock-in por usar una solución de un tercero, mayor tamaño del APK, bugs que igual no puedes arreglar, poco aprovechamiento de las características nativas de cada plataforma.
Lo de multiplataforma tiene muchos peros, principalmente la interfaz de usuario. Cierto que Xamarin ofrece un API genérico para algunos temas de interfaz pero no es lo mismo que hacerla nativa. Y entonces te da igual qué lenguaje uses porque tendrás que aprender el API de la plataforma concreta.
Si buscas Xamarin en este foro verás que hemos comentado el tema en otras ocasiones. Para juegos por ejemplo las opciones multiplataforma están muy bien porque al final te dedicas a pintar en pantalla todo y no suelen integrarse con la interfaz de usuario nativa. Para apps donde el grueso sea la lógica de la app también puede tener sentido no andar portando a distintos lenguajes, o si ya tienes una base de código C#.
Aprender a desarrollar C# y Xamarin para no usar Android Studio y Java/Kotlin no termino de verlo. Y para iOS te digo lo mismo. El nuevo lenguaje de Apple, Swift, y Kotlin son bastante parecidos en sintaxis y orientación (funcionales, con optionals, lambdas, etc.). Si aprendes un lenguaje el otro es pan comido. Lo que cambia entre plataformas son las APIs y ahí Xamarin poco puede hacer.