Pues, ese bucle es el que hace todo.
Siguiendo el ejemplo...
arr(0) = 1
arr(1) = 2
arr(2) = 3
...
arr(9) = 10
entonces, mediante ese bucle, tenemos que:
-cuando
i vale 0,
ubound(arr)-i vale 9 (9-0=9).. entonces a
nuevo_arr(9) le asigno el valor de
arr(0)
-cuando
i vale 1,
ubound(arr)-i vale 8 (9-1=8).. entonces a
nuevo_arr(8) le asigno el valor de
arr(1)
-cuando
i vale 2,
ubound(arr)-i vale 7 (9-2=7).. entonces a
nuevo_arr(7) le asigno el valor de
arr(2)
...
-cuando
i vale 9,
ubound(arr)-i vale 0 (9-9=0).. entonces a
nuevo_arr(0) le asigno el valor de
arr(9)
En síntesis, le asigna al último elemento del array el primero del otro, luego le asigna al anteúltimo elemento el valor del segundo del otro, después le asigna al antepenúltimo lelemento el valor del tercero y así hasta que llega al final y le asigna al primer elemento el valor del último del otro array.
Si, la síntesis no quedó clara.. ¿no?