Не опасно само по себе - но бывают случаи, когда очень полезно иметь отдельную сборку с вашими контрактами на обслуживание, работу и данные (в основном только контракты, интерфейсы) - когда вам нужно разделить их между сервероми на стороне клиента.
Нет никакого смысла делить весь код реализации сервиса (фактический класс сервиса, который реализует интерфейс сервиса) с клиентом.
Плюс: если у вас есть интерфейсы в отдельном файле (и, возможно, в сборке), это облегчает написание модульных тестов, особенно если вы хотите смоделировать сервис.Немного запутанно, если вы смешиваете интерфейс и класс в одном файле.
Поэтому я считаю полезным и полезным, чтобы иметь отдельные файлы для интерфейсов и реализаций (фактически: всегда только один класс на файл),и поместить все сервисные и информационные контракты (и контракты на отказ) в отдельную сборку.