Почему нужно отнимать единицу вот в этой строке?
Потому что в C# нумерация с 0

И массив длины Length имеет элементы с индексами 0..Length-1
Индекс Length будет уже за пределами массива.

В вашем примере производится запись в последний элемент массива
Потому что индексация в массивах начинается с нуля