Потому что когда скрипт загрузится, в момент выполнения функции onload значение переменной i уже будет другое (хотя по идее оно останется равным liferef.length - 1, но только если вы не вызываете dynamicLoad повторно).
Исправить можно так:
fileref[i].onload = (function(i){
return function() {
console.log(fname[i] + " loaded successful")
}
})(i);