Na primeira forma,
env | grep $USER
A variável $USER é expandida para seu valor para grep. Então, grep mostrará todas as linhas que contém o valor da variável $USER . Para mim, o valor de $USER é anwar . Então o comando é equivalente a env | grep anwar
Se você quiser usar o literal $USER no grep, use aspas simples conforme sugerido em esta resposta
No segundo formulário,
env | grep USER
apenas o literal USER é usado para o grep e, portanto, grep mostrará apenas as linhas que contêm USER .