Влияет ли на что либо количество параметров в конструкторе?
нормально. только 
1) если аргумент array то пусть она по дефолту будет пустым массивом а не null
2) проверки на !empty в вашем случае бесполезны, проще сразу $this->template = $template, или через сеттеры
Нормально, каких-либо ограничений нет. Дело в удобстве и универсальности, но это решает программист. Зачастую конструкторы и прочие методы могут принимать куда более, чем три аргумента. И ничего плохого в этом нет. Даже с помощью func_get_args() можно очень гибко организовать прием аргументов, если случай сложный.