Como ninguém parece ter sugerido a resposta óbvia, eu vou.
Por que não apenas usar um loop numérico como usado em linguagens mainstream como C e Java?
for ((i = 1; i <= $#arr; i++)); do
echo "Index: $i, value: ${arr[i]}"
done
Ou, ainda mais curto (e mais lento, e possivelmente um hog de memória com grandes matrizes):
for i in {1..$#arr}; do
echo "Index: $i, value: ${arr[i]}"
done