Вам не нужно предварительно генерировать прокси, если у вас есть ссылка на сборки, которые определяют интерфейс службы, операции и контракты данных.Затем вы можете создать прокси на лету, используя ChannelFactory.
var factory = new ChannelFactory<IMyServiceInterface>("MyServiceNameInAppConfig");
var proxy = factory.CreateChannel();
Это намного проще, чем использовать svcutil.Однако, если служба удаленная и вы не можете получить доступ к сборкам типов, у вас нет другого выбора, кроме как создать прокси.
Относительно вашего вопроса о том, почему для генерации прокси-кода проще использовать svcutil вместо VS, не видя реальной книги, это сложно комментировать, но под капотом visual studio использует svcutil для генерации кода в любом случае,поэтому я не вижу, как это будет лучше или хуже.Я полагаю, что когда вы делаете это вручную, вы получаете больше контроля над тем, что генерируется.