думаю базовые 2 случая copyWithin(0, 1) и copyWithin(1, 0), а остальное потом накрутили
[1, 2, 3, 4, 5].copyWithin(0, 1)
↓
[2, 3, 4, 5, 5].copyWithin(0, 1)
↓
[3, 4, 5, 5, 5].copyWithin(0, 1)
↓
[4, 5, 5, 5, 5].copyWithin(0, 1)
↓
[5, 5, 5, 5, 5].copyWithin(0, 1)
[1, 2, 3, 4, 5].copyWithin(1, 0)
↓
[1, 1, 2, 3, 4].copyWithin(1, 0)
↓
[1, 1, 1, 2, 3].copyWithin(1, 0)
↓
[1, 1, 1, 1, 2].copyWithin(1, 0)
↓
[1, 1, 1, 1, 1].copyWithin(1, 0)
похоже на shift и unshift без изменения длины