Хочется отделить мух от котлет и не сваливать все в один класс, но не хочется публиковать отдельные сервисы для каждого плагина.
Вот эта посылка — неверна. Если уж вы хотите разделить ответственность между классами, то и между сервисами ее неплохо бы разделить. Low-cohesion-сервис — не меньшее зло, чем low-cohesion-класс.
На клиенте такой способ позволяет добиться желаемого — там автоматически генерируется несколько клиентов для одного сервиса, но на сервере все равно все сваливается в один класс т.к. он реализует все интерфейсы.
Ну вообще (если отвлечься от SRP), имеем дело со стандартным шаблоном facade. Ваш «один класс на сервере» — это фасад, он ничего не делает, а просто перенаправляет вызовы в соответствующие конкретные классы.
Но, повторюсь, это не ваш случай.