Тут ситуация схожа с HTML: не приходит в голову спрашивать, почему мы каждый раз создаем теги, вместо того, чтобы создать заранее и использовать "готовые".
swiftUI кстати имет сходую структуру "виджеты" внутри "виджетов", но только он инитит их один раз и больше не пересоздает никогда
Нет. lateinit означает "обещаю в будущем проинициализировать" и если ты обратишься к члену, не сделав этого, то он тебе даст по рукам. by lazy - инициализация при первом обращении, и null там получиться не может.