Они не являются взаимоисключающими. Шаблон Model-View-Controller действительно является шаблоном проектирования пользовательского интерфейса, и он касается логических, а не физических уровней.
Чаще всего я слышу «n-уровневую архитектуру», используемую для описания фактического физического разделения уровней приложения. Например, система, в которой пользовательский интерфейс выполняется в одном процессе, обменивается данными с прикладным уровнем (возможно, с помощью обмена сообщениями или веб-служб), который выполняется в другом процессе (возможно, на другом сервере), который, в свою очередь, обращается к уровню данных, который выполняется в еще одном процессе (обычно это сервер базы данных).
Это описание может быть особенно запутанным, поскольку «логика приложения» может означать несколько вещей: в n-уровневой системе это обычно означает бизнес-логика - в отличие от логики пользовательского интерфейса ( например, какие виджеты включены, когда пользователь устанавливает определенный флажок).
Например, в n-уровневой системе уровень презентации может вызывать метод веб-службы, который принимает идентификатор элемента. Веб-служба работает на другом сервере, где выполняет сложные вычисления и возвращает цену.
В более простой архитектуре ваше приложение может вычислять цену товара в том же процессе, что и пользовательский интерфейс - хотя логика ценообразования может быть разделена на собственный логический слой (возможно, внутри библиотеки или исполняемого файла).
Я не могу вспомнить ни одну текущую инфраструктуру MVC, которая заботится о том, работают ли их слои в отдельных физических процессах или нет.