O delimitador here doc tem que ser uma linha delimitada no alias em zsh (parece um bug quando você adiciona aquele delimitador quando pressiona enter), então:
alias runthing='cd; date << HERE
date
HERE
'
Aqui, usar um alias está errado. Considere por exemplo:
echo foo || runthing
Porque alias é apenas uma forma de substituição de texto em código (aliases é antes de todo recurso csh, csh não tinha funções), que se torna
echo foo || cd; date...
O que significa que date seria executado mesmo que echo tenha sido bem-sucedido.
É melhor você usar uma função aqui:
runthing() {
cd && date << EOF
date
EOF
}
(claro, faz pouco sentido alimentar um heredoc para date dado que date não lê seu stdin, eu apenas suponho, foi apenas para o exemplo).