Hocam geç oldu biraz ama kusura bakmayın.

function addFile($tip,$dosya) {
if($tip == 'js') {
return '<script type="text/javascript" src="'.$dosya.'"></script>';
}
.
.
.
//burada diğer tipler kontrol edilip ona göre işlem yapılır
}
addFile fonksiyonunun içeriğinin yukarıdaki gibi olduğunu varsayarsak, senin yaptığın mantıkla defer='defer' kısmıda src kısmına yazılacağı için js dosyasını çekemeyecektir.

function addFile($tip,$dosya,$ek='') {
if($tip == 'js') {
return '<script type="text/javascript" src="'.$dosya.'" '.$ek.'></script>';
}
.
.
.
//burada diğer tipler kontrol edilip ona göre işlem yapılır
}
addFile fonksiyonunu üstteki gibi düzenleyebilirseniz yada kendinizce farklı mantık oluşturabilirsiniz, $ek parametresi yerine defer="defer" gönderirsiniz sorununuz çözülmüş olur.

Umarım faydalı olur.