Как работает этот массив и цикл?
// i === 0
array[i] = [array[i],array[array.length - i - 1]]; // [[1, 8], 2, 3, 4, 5, 6, 7, 8]
array[array.length - i - 1] = array[i][0]; // [[1, 8], 2, 3, 4, 5, 6, 7, 1]
array[i] = array[i][1]; // [8, 2, 3, 4, 5, 6, 7, 1]
// и т.д.
А если нажать F12 и запустить код в консоли?
Сначала в ячейку массива временно записывается массив из двух элементов, собственного и зеркального с обратной стороны. Потом значения возвращаются, но обмениваются местами. Чтобы не поменять элементы местами дважды, цикл идёт только до середины длины.