Olá,Mikaela e Deivid, irei tentar responder os dois neste tópico...
Mikaela, sua função faz sentido, a única coisa que muda é o seu pensamento, em quanto o professor pensou em mexer nas imagens do carro, você mexeu na posição dos carros (Que está ligado com a imagem deles :v ).
O único "problema" que vejo é a questão de tornar o código o mais legível para todos, até aqueles que são leigos em programação. (Você realmente economizou uma linha, mas o código pode ficar melhor legível se fizer a quebra das funções que irei explicar abaixo)
Aqui entra a dúvida do Deivid, a declaração return é para você retornar o valor de uma função para qualquer lugar que você queira, nesse caso foi para outra função.
O que o mestre fez foi deixar o código mais lúcido, ele fez uma função somente para testar se o carrinho passou da tela com fluidez, ele tirou um "trabalho" da função voltaPosicaoCarros e deixo-a somente trabalhar com a questão de fazer o carro voltar para o início. Com isso, ele tirando essa "tarefa" dessa função, ele criou outra para terminar esse afazer, que é a função passouTodaATela e essa função retorna o valor dela para a função principal (Resumindo, ele dividiu os trabalhos).
Para ficar mais claro a declaração return darei um exemplo e se você quiser, utiliza o console da página para verificar (Você acessa esse console através da tecla F12 ou CTRL + SHIFT + i ).
Vamos ao exemplo:
function quadrado (num){
return quadrado = num * num;
}
quadrado(2)
console.log(quadrado);
Faça o teste de com/sem return você verá a diferença... Sem essa declaração a função somente faz a conta, mas não imprime o resultado para nós; para vermos o valor, devemos colocar o return.
Se você tirar o return da função passouTodaATela você verá que os carros nunca mais voltarão ao seu estágio inicial... Logo, reforçando a ideia, passouTodaATela necessita dessa declaração para retomar o valor na outra função (Faz isso por de trás dos panos)
Se continuar a dúvida, manda aqui para eu pensar uma outra forma de explicar.