Самое простое объяснение состоит в том, что это зависит от того, как вы извлекаете свои данные и пытаетесь ли вы обновить пользовательский интерфейс. Например, при непосредственном использовании HttpWebRequest его всегда нужно маршалировать обратно в поток пользовательского интерфейса. Однако, если вы используете WebClient, то это сделано для вас. WCF также сделает вам маршалинг.
"Прокси WCF в приложениях Silverlight используют SynchronizationContext потока, из которого инициируется вызов веб-службы, для планирования вызова асинхронного обработчика события при получении ответа."
http://tomasz.janczuk.org/2009/08/improving-performance-of-concurrent-wcf.html
Другими словами, WCF будет перенаправлять вызов обратно в поток, из которого он был вызван. Так что, если вы вызываете ваши сервисные вызовы из потока пользовательского интерфейса, они будут возвращаться в поток пользовательского интерфейса. Если вы вызываете свои сервисы в другом потоке, вам нужно выполнить маршалинг самостоятельно.
Надеюсь, это поможет.