Как работает цикл, который имитирует работу метода shift?
1) у вас создается массив а с элементами 4, 5, 6
2) при запуске функции создается пустой массив b
3) запускается цикл от 1 до конца массива а (то есть, от второго до последнего элемента массива а)
4) но, благодаря [i-1], в массив b записываются элементы массива а со сдвигом 1 (то есть, b[0] = a[1], b[1] = a[2])
Идём по массиву a до конца, начиная с элемента с индексом 1, в данном случае это 5-рка. Записываем эту пятёрку в массив b на первую(нулевую) позицию. Повторяем всё то же самое ещё одну итерацию. Таким образом получаем массив b = [5, 6].
Далее заменяем исходный массив a новым массивом b, в котором на один элемент у нас меньше. При следующем клике всё повторится и в массиве a станет на ещё один элемент меньше. Ребят, это очень просто.