Ваш вопрос указывает на недопонимание MVC. Вы спросили: «Почему бы модель быстрее кэшировать данные, а не контроллер ». Контроллер вообще не хранит данные, поэтому не имеет значения, насколько быстро он будет или не будет. Модель содержит данные. А в приложении Core Data модель привязана к постоянному хранилищу.
Тот факт, что постоянные хранилища могут находиться в памяти, делает кодирование чрезвычайно удобным, поскольку вызывающим абонентам не нужно беспокоиться о том, как хранятся данные. В вашем примере вызывающие абоненты должны будут вести себя по-разному (иметь дело с разными классами) для данных, хранящихся в локальном хранилище, по сравнению с удаленным хранилищем. Core Data абстрагируется от этого, что позволяет легко перемещать ваш магазин туда, куда вы хотите.