Não é culpa do head ; é ls .
ls quase sempre classifica sua saída (por padrão, por nome; se solicitado, por data).
E é da natureza de qualquer tipo que não pode produzir qualquer saída
até que leia toda a entrada.
find não classifica sua saída, então pode começar a produzir mais rápido.
Você poderia ter visto isso por si mesmo simplesmente executando
ls
e
find
e observando a diferença no tempo de resposta.
BTW, você pode obter ls para listar diretórios sem classificar, especificando -U .