1 класс эксепшена - 1 файл. Я делал исключения для эксепшенов, которые использовались 1 конкретным классом и более нигде, и держал их в файле этого класса, что не сказывалось на автозагрузке никак. Но потом одумался - поскольку при использовании опкод-кешера наличие 10 лишних файлов классов на производительность не оказывает никакого влияния вообще, а поодерживать код чуть-чуть проще. Последнее, имхо, сильно важнее всех остальных соображений, кроме производительности.
PS. Идея не использовать PSR ущербна в корне. Только не надо путать идею не использовать отраслевой стандарт с идеей не использовать популярный фреймворк. Это разные идеи :)