Isso porque seu shell trunca o arquivo quando você redireciona para ele. Isso acontece antes que a cabeça tenha a chance de lê-lo.
Você pode usar um arquivo temporário:
head -n1 hosts > hosts.tmp && mv hosts.tmp hosts
Ou use sponge
do pacote moreutils:
head -n1 hosts | sponge hosts