Основная причина, вероятно, сводится к разделению концерна.Например, если у вас есть те же данные, которые должны отображаться во всем приложении, вы можете создать класс Singleton с именем DataManager, который занимается извлечением, сохранением, редактированием и удалением этих данных.Да, вы можете добавить все те же функции через App Delegate, и в результате они могут быть одинаковыми, но если организованный и читаемый код является проблемой для разработчика (и определенно проблемой, если вы разрабатываете для компании, илиожидайте, что кто-то еще, возможно, продолжит работу с вашим кодом), тогда, если вы сделали синглтон DataManager, кто бы ни работал над кодом, он может четко понимать, какие обязанности этого класса основаны на его названии.
Создание отдельных классов также помогает вам уменьшить наличие огромных классов, которые становятся трудными для понимания.Если в вашем приложении есть DataManager, APIManager и другой менеджер, то объединение всех этих функций в один AppDelegate может привести к путанице по мере роста вашего приложения.