Это зависит от того, что вы хотите сделать. Вы правы, что размещение интерфейсов и классов в одной сборке несколько ограничит полезность абстракции указанных интерфейсов. Например. если вы хотите загрузить типы в AppDomain с целью их повторной выгрузки, вы обычно получаете доступ к экземплярам через интерфейсы. Однако, если интерфейсы и классы находятся в одной сборке, вы не сможете загрузить интерфейсы без загрузки классов.
Аналогичным образом, если вы позднее захотите предоставить другой набор классов для одного или нескольких интерфейсов, вы все равно получите все старые типы, если они находятся в той же сборке, что и интерфейсы.
С учетом вышесказанного я должен признать, что время от времени размещаю интерфейсы и классы в одной сборке просто потому, что не думаю, что мне понадобится гибкость, поэтому я предпочитаю быть проще. Пока у вас есть возможность восстановить все, вы можете изменить интерфейсы позже, если возникнет такая необходимость.