Ну, eval - это не дерьмо само по себе, просто создать дыру в безопасности с этим, если вы не будете осторожны с тем, что вы разрешаете внутри этого eval (это, и, возможно, тот факт, что это может быть плохо для читабельности код).
Что касается знаков <?
, то это потому, что eval ожидает php-код, поэтому, если вы не хотите смешивать php с простым выводом, включите только закрывающий тег ?>
.
В целом, однако, вы можете реализовать шаблоны лучше, попробуйте изучить буферизацию вывода.