a atribuição de referência é atômica, então por que Interlocked.Exchange (ref Object, Object) é necessário?

Em meu serviço da web asmx multithread, eu tinha um campo de classe _allData do meu próprio tipo SystemData, que consiste em poucos List<T>e está Dictionary<T>marcado como volatile. Os dados do sistema ( _allData) são atualizados de vez em quando e eu faço isso criando outro objeto...