O ponto chave aqui é uma estrutura de repetição básica para iterar sobre uma cópia do array original, evitando que ele seja modificado.
Para resolver basta utilizar uma nova variável para armazenar o array invertido e uma estrutura de repetição como o for referenciando o tamanho do array:
function imutableReverse(arr) { const reversedArray = []
for (let i = 0; i < arr.length; i++) {
reversedArray[i] = arr[arr.length - i -1]
}
return reversedArray
}