I mean, package hierachy is already described/enforced using the folder structure of the file system.
Not necessarily. While it's certainly a good idea to organize your code that way, it's not a requirement. Also bear in mind that source code needn't be in a file system to start with.
Fundamentally, I think it's entirely reasonable to make the content of the source file the important thing. Heck, you could take it to the other extreme and assume the class being declared by the filename - that's not just a convention, but one which is explicitly valid (in the JLS) to be enforced by the compiler for public top-level classes.