Il motivo e' che il file *.class e' una delle possibili implementazioni del "supporto fisico" una classe, ma non l'unica. Ad esempio, le classi potrebbero trovarsi come record all'interno di un grosso database: in quel caso la notazione

java NomeClasse.class

non sarebbe consistente.