Provavelmente, há mais de um arquivo que corresponde a *.o , enquanto apenas um arquivo corresponde a *main.o , portanto, no primeiro caso, a expansão do shell é executada:
$ find . -name main.o
e isso funciona. No segundo caso:
$ find . -name file1.o main.o
E é por isso que você tem erros.
Para evitar isso, você deve citar expression em ambos os comandos:
$ find . -name '*.o'
$ find . -name '*main.o'