Por exemplo, nesse código que eu fiz pra mostrar o índice e o valor presentes naquela posição em cada iteração pelo array:
Como ele detecta que os parâmetros item, index e array se tratam, respectivamente, do valor atual, do índice e do próprio array sem eu nem ter passado esses parâmetros para a função (apenas declarei)?
Respondendo: Porque ele espera uma função com essa assinatura, ou seja, é assim que é sua implementação e para você utilizar deve ser essa assinatura de parâmetros. Na imagem a sua é anonima mas, você pode declarar uma função comum e utilizar com essa mesma assinatura!