Мы делаем это на работе, ее просто легче найти материал, если класс и файлы имеют то же имя. Что касается производительности, у Вас действительно не должно быть 5 000 классов в единственном проекте. Если Вы делаете, некоторый рефакторинг мог бы быть в порядке.
Однако существуют экземпляры, когда у нас есть несколько классов в одном файле. И это - когда это - просто частный класс помощника для основного класса файла.
Я написал ложную реализацию MongoDB на Java: mongo-java-server (см. этот ответ ).