или "императивное vs деклатативное описание проектов".
Исторически make-файлы появились раньше. Они связаны с интерфейсом командной строки, который был тогда единственным. По сути make-файл это скрипт на каком-то языке, который позвляет вызвать компилятор, линкер и множество других программ с любыми опциями. Организовать какую-то логику (иногда весьма нетривиальную). Все компиляторы так или иначе до сих пор поддерживают интерфейс командной строки и опции, передаваемые через него.
С другой стороны, файл проекта, в котором проект описан более-менее декларативно. Можно рассмотреть файлы Visual Studio (vcproj, vcxproj). Наличие удобных визуальных средств редактирования этих файлов (диалоги свойств проекта в студии). Строгая, более-менее декларативная структура (хотя возможности задать pre/post build steps тоже есть). Нет необходимости изучать еще один язык программирования. Значительно снижена вероятность ошибки при редактировании.
Лично мне больше нравится декларативный подход в виде project файлов (при условии грамотного проектирования структуры этих файлов и возможно даже включения базовых требований к структуре в спецификацию языка программирования). А make-файлы я как не понимал, так и не понимаю (поэтому возможно, мое мнение субъективно). Интересно ваше мнение.