Чем плохо выносить повторяющиеся элементы дизайна в отдельные файлы и подключать их потом с помощью PHP?
Тут, как обычно, не одна проблема, а три.

Первая проблема - это, как всегда, неумение задавать вопросы.
Вот и сейчас - вопрос "чем плохо ходить пешком?" Что можно ответить на этот вопрос? 
Но потом выясняется что вопрос на самом деле "Я живу в 20 километрах от работы. Чем плохо ходить на работу пешком?".

То есть вопрос у нас на самом деле, "Чем плохо выносить повторяющиеся элементы HTML в отдельные файлы и подключать их потом с помощью include?". Этот вопрос уже будет более осмысленный, и на него даже можно дать ответ не выглядя при этом идиотом. 

Вторая проблема заключается в том, что подход с "хидером и футером" реально неудобен и устарел уже лет 20 как. И вместо него используются шаблонизаторы. Тупо редактировать хтмл удобнее когда он лежит в одном файле, а не в header.php. footer.php. menu.php, banners.php и еще 10 файлах.
И это я даже не заикаюсь о случае, когда на разных страницах надо поключать разные файлы стилей и скриптов.

И третья проблема заключается в том, что хотя в принципе и можно что-то несложное накалякать с хидером и футером, но поголовно все новички все равно клепают их неправильно - а именно вкрячивают хидер до того, как скрипт вообще начнет работу. И потом имеют все прелести невозможности вывести НТТР заголовок, поменять что-то в хидере в зависимости от выводимых данных, поменять формат вывода  или аварийно завершить работу.
Зависит. Если вы на одной странице 40 раз запрашиваете файл с кусочком хтмл - это тупость. Файловая система не самая производительная часть компьютеров, обращение к дискам всегда было (и все еще является) узким местом. Если это разовый модуль - все ок, вы все равно его откуда-то из файловой системы должны взять, есть некоторый оверхед на открытие еще одного файлового дескриптора в рамках ОС, но в целом это не критично.