É possível que um comando detecte quando sua saída está indo para um TTY ou não. Assim, neste caso em particular, quando ls detecta que sua saída não está indo para um TTY, ela se comporta como se -1 fosse passado como argumento.
Você pode ver isso, e que grep não está fazendo nada de especial usando cat :
ls | cat