bash -c 'some command' retém o acesso à entrada padrão do chamador, portanto, read ou comandos de leitura da entrada padrão funcionarão normalmente. bash <<< 'some command' substitui essa entrada pela linha que está sendo passada, então bash -c cat e bash <<< cat fazem coisas diferentes.
$ bash -c cat
abc
abc
^D
$ bash <<< cat
$
Por outro lado, você poderia fazer uso desse recurso para fornecer sua própria entrada padrão para ser usada através de $'...' , se você for muito cuidadoso:
$ bash <<< $'read x y\nabc def ghi\necho $y'
def ghi
$
Eu não gostaria de confiar nisso, mas às vezes pode ser conveniente.
bash -c também permite que argumentos sejam passados para o script e $0 a ser definido:
bash -c 'some command' sh abc def
definirá $1 para abc e $2 para def dentro de some command .