App-Entwicklung: Cross-Platform oder nativ programmieren?

Immer wieder gibt es bei der Programmierung einer mobilen App die gleiche Diskussion: Soll sie plattformspezifisch, nativ umgesetzt werden (Swift, Kotlin/Java) oder mit Hilfe einer Cross-Platform-Technologie wie Xamarin(öffnet im neuen Fenster) von Microsoft oder Flutter(öffnet im neuen Fenster) von Google? Oft entsteht der Eindruck, es gebe zwei Lager. Tatsächlich sind es aber viel mehr, denn auch innerhalb der Cross-Platform-Lösungen gibt es große Unterschiede.
Schaut man sich zunächst grundsätzlich den Unterschied zwischen nativer App-Entwicklung und den möglichen Cross-Platform-Lösungen an, so kann man folgendes festhalten.