Насколько я понимаю, когда разработчик (компания) разрабатывает как клиент, так и сервис, лучше объединить контракты на данные и сервисы в отдельную сборку, которая будет использоваться как клиентскими, так и сервисными приложениями. Это необходимо для того, чтобы избежать дублирования кода при создании прокси-классов с использованием, например, SvcUtil.
Действительно ли это предпочтительный подход, и был ли у вас проект, который был исключением из этого правила?