Потому что это на самом деле массив массивов, и делая так
array[1] = 3;
Вы на самом деле заменяете массив под номером 1 на число, и в итоге
array[1][1] = 5;
~
3[1] = 5;
что, естесно, бред.
Если очень хочется - можно применить хак:
function toString(){ return this.value+'' }
function toInt(){ return parseInt(this.value,10) }
var array = new Array(10);
for(var i = 0; i < array.length; i++)
{array[i] = new Array(10);}
array[1].value = 3;
array[1].toString = toString;
array[1].valueOf = toInt;
array[1][1] = 5;
alert(array[1]);
alert(array[1][1]);
но лучше придумать что-нибудь другое.