Porque estás sobreescribiendo la referencia a los constructores EN ESE SCOPE.
Es básicamente como funciona el scoping, eso te va a suceder con cualquier tipo de variables.
Vos defínis una función Array, que no sobreescribe el objeto nativo, pero si te 'opaca' el acceso al mismo.
http://en.wikipedia.org/wiki/Variable_shadowing
Eventualmente podes opacar todas las referencias a un objeto, pasando éste a ser víctima del Garbage Collector, pero no es el caso con los objetos nativos.
PD: En tu ejemplo podes instanciar implicitamente un array con la construcción [], fijate que sigue siendo un array nativo.