это фишка для придания псевдомассиву arguments методов обычного массива.
почему slice возвращает массив - это его реализация, просто я смотрел его стандартное применение и он возвращает новый массив, содержащий копию части исходного массива но тут мы ничего не передаем кроме контекста, откуда [1,2,3]