It's simple: since standard C++ currently doesn't even acknowledge the existence of threads, the standard makes no mention of them whatsoever, nor of thread safety issues. The thread safety of components is therefore completely up to the implementation.
Apparently MS's implementation is thread-safe (or as thread-safe as the shared-state cout can possibly be), while GCC's is not.