Observe que Java diferencia maiúsculas de minúsculas, mas o sistema de arquivos não precisa ser. Se o nome base do arquivo for "abcd", mas a classe for "Abcd", isso seria compatível com a regra em um sistema de arquivos que não diferencia maiúsculas de minúsculas? Certamente não quando portado para um que diferencia maiúsculas de minúsculas.
Ou suponha que você tenha uma classe chamada ABCD e uma classe Abcd (não vamos deixar de ser uma má idéia: isso pode acontecer) e o programa é portado para um sistema de arquivos que não diferencia maiúsculas de minúsculas. Agora você não apenas precisa renomear arquivos, mas também classes, oops!
Ou e se não houver arquivo? Suponha que você tenha um compilador Java que possa receber entrada na entrada padrão. Então a classe deve ser nomeada "StandardInput"?
Se você explorar racionalmente as implicações de exigir que os nomes de arquivos sigam os nomes das classes, você descobrirá que é uma má ideia de mais de uma maneira.