Caro Renato os comandos ls e "test moderno" tem objetivos diferentes a priori.
Mas vc está cometendo um engano nessa comparação, o if como foi usado não considera a saída do ls, mas o código de retorno do comando, por isso é muito comum usar o if junto com test.
A sintaxe que usou é verificar no test é verificar a existência de uma arquivo específico, e o ls é listar arquivos que atendem o critério fornecido ou todos os disponíveis.
Tanto que se vc fizer:
$ ls arq* >/dev/null 2>&1 && echo Existe || echo Não existe
Tem o mesmo efeito que:
$ if ls arq* >/dev/null 2>&1; then echo Existe; else echo Não Existe; fi
e
$ ls arq* >/dev/null 2>&1
$ if test $? -eq 0; then echo Existe; else echo Não Existe; fi
Então o comando test trabalha com elementos finitos nas suas comparações podendo ser unitários ou duplos, enquanto o comando ls é mais amplo, e não tem i mesmo escopo do if que direciona o fluxo em virtude do código de retorno do comando usado.
man ls
man test
man bash
podem dar mais detalhes sobre essas diferenças
[]'s
Itamar