Одна хорошая причина в том, что конструктор Array ведет себя не интуитивно. Например:
var a = new Array(5);
console.log(a.length); //prints "5"
console.log(a[0]); //prints "undefined"
var b = new Array(1,2);
console.log(b.length); //prints "2"
console.log(b[0]); //prints "1"
В этом случае a заканчивается массивом 5 со всеми неопределенными элементами, а b заканчивается массивом 2 со значениями [1,2].
var c = new Array("5");
console.log(c.length); //prints "1"
console.log(c[0]); //prints "5"
И здесь вы получите одноэлементный массив, содержащий «5»
В общем, вы, вероятно, никогда не должны использовать конструкторы для встроенных типов в Javascript. Все они имеют странные крайние случаи, подобные этому. Например:
var s = new String("Hello");
var l = "Hello";
console.log(typeof(s)); // prints "object"
console.log(typeof(l)); // prints "string"