Faça do par interno de aspas aspas duplas:
alias hidden='ls -a | grep "^\."'
Ou faça o par externo de aspas duplas:
alias hidden="ls -a | grep '^\.'"
Ou faça todas as aspas com aspas duplas e escape do par interno:
alias hidden="ls -a | grep \"^\.\""
Ou faça disso uma função, para poder passar alguns argumentos ao chamar:
hidden() { ls -a "$@" | grep '^\.'; }