Wenn man eine Anwendung für möglichst viele Plattformen entwickeln möchte ist Unity durchaus eine Überlegung wert, selbst wenn es natürlich je nach konkreter Anwendung auch gute Gründe gibt, die dagegen sprechen. Das muss man abwägen und da gibt es eine Vielzahl von relevanten Parametern. Xamarin ist abgesehen davon, dass ein paar Plattformen unterstützt werden ein völlig anderes Werkzeug als Unity. Einige der Nachteile von Unity zur "App-Entwicklung" wurden ja bereits erwähnt und natürlich gibt es eine Vielzahl von Anwendungen, für die Unity definitiv nicht das am besten geeignete Werkzeug ist.
Allgemein "Non - Game App mit Unity3D" geht aber durchaus und macht auch oft Sinn. Da gibt es einige Beispiele, wobei das zwar "Non-Game Apps" sind, aber in den meisten Fällen "interaktive 3D Apps" (immerhin gibt's auch einige "2D Apps"). Siehe auch:
Unity - Showcase - Gallery - Non-games. Es gibt halt nicht nur "Spiele" und "Nicht-Spiele", sondern auch noch eine Menge "Nicht-Spiele mit interaktiven 3D- oder 2D-Features", für die Unity perfekt geeignet ist (wobei hier mit "interaktive 2D-Features" natürlich keine Standard-GUI gemeint ist).
Die entscheidende Frage ist letztlich:
Wie soll die App denn konkret aussehen?
Eine Photosortier-App könnte beispielsweise durchaus so aufgebaut sein, dass die 2D-Features von Unity dabei sinnvoll genutzt werden. Wenn man es etwas verspielter mag kann eine Photosortier-App sogar 3D-Effekte nutzen. Ob das die beste Art ist, eine Photosortier-App zu bauen sei dann mal dahingestellt - aber da es eher ein Übungsprojekt sein soll, spricht meiner Ansicht nach nichts dagegen, sich dabei kreativ auszutoben und ganz neue Ansätze zu versuchen.
Prinzipiell kann man mit Unity auch die Standard-GUIs von iOS, Android oder Windows Phone verwenden. Das ist etwas umständlich, allerdings ist das mit Xamarin in der Praxis auch nicht so einfach, wie es in der Werbung aussieht. Am Ende hat man dafür mit Xamarin natürlich trotzdem die bessere Lösung - aber wenn man Einarbeitung und Lizenzkosten mit einbezieht oder eine Plattform braucht, die von Xamarin nicht unterstützt wird, ist Xamarin vielleicht nicht die effektivste Lösung.
Unity schmeisst übrigens sehr wohl ungenutzte Komponenten aus dem Build - das Stichwort dazu ist "Stripping". Natürlich nicht alle (und ganz bestimmt nicht den kompletten Namespace UnityEngine), aber speziell seit der Einführung von IL2CPP, was ja auch schon für iOS-Builds genutzt wird, optimieren die recht fleissig. Groß sind die Unity Builds trotzdem ... ein größeres Problem ist da meiner Ansicht nach aber, dass Unity Games / Apps oft relativ lang brauchen, um zu starten.