Tenga en cuenta que Java distingue entre mayúsculas y minúsculas, pero el sistema de archivos no necesita serlo. Si el nombre base del archivo es "abcd", pero la clase es "Abcd", ¿se ajustaría a la regla en un sistema de archivos que no distingue entre mayúsculas y minúsculas? Ciertamente no cuando se transfiere a mayúsculas y minúsculas.
O supongamos que tiene una clase llamada ABCD, y una clase Abcd (no pensemos que es una mala idea: podría suceder) y el programa se transfiere a un sistema de archivos que no distingue entre mayúsculas y minúsculas. Ahora no solo tiene que cambiar el nombre de los archivos, sino también las clases, ¡vaya!
¿O qué pasa si no hay un archivo? Supongamos que tiene un compilador de Java que puede tomar datos de entrada estándar. Entonces, ¿la clase debe llamarse "StandardInput"?
Si explora racionalmente las implicaciones de requerir que los nombres de archivo sigan a los nombres de clase, encontrará que es una mala idea en más de una forma.