You'd have to ask the language designers for the real reason, but it's a sensible way of organising your code, and they decided to enforce one approach.
You may ask this question to James Gosling, Mike Sheridan and Patrick Naughton this question(designers of this programming language) !!!
Its just a way of organizing and it is actually good so that there is no disconnect between the class name and the file name.
Or else if you wanted to know where an error occured you would have to open all the files see the class names and then identify the problem which would consume a lot of your quality time.