Comparei as páginas do manual de dire lse eles parecem ser exatamente o mesmo. Ambos fazem parte do GNU coreutils e "listam o conteúdo do diretório".
A única diferença que eu vi até agora é que dirnão coloriza a saída.
Então, por que existem dois comandos? Há uma diferença que eu perdi? Por que alguém iria preferir dirmais ls?