Isso porque echo
está sendo executado como root, mas o shell é o que está realmente realizando o redirecionamento. Você precisa gerar um novo shell para que isso funcione:
sudo -- sh -c "echo test >> /etc/hosts"
Edit: Eu não vi o fato de que o >
redirect funciona; Eu não posso explicar isso.