Массив с индексами которые не являются цифрами - будет считаться object`ом, ...тогда свойство length бессмыслен! Он ничего не вернет! Придется проходиться циклом и считать каждый элемент.
arr1.length - является верным;
если arr1 будет содержать в себе 2 сл. элемента, у которых первый индекс будет равен 1 и другой 1000 то length вернет 1000!!!!
В случае с arr2 - это уже будет работать как object; т.е. придется проходиться по каждому элементу:

Код AS3:
var intArrayLength: int;
for each(var strIndex: String in arr2) intArrayLength++;
trace("arr2 length: " + intArrayLength);