While he's technically right, you have no guarantee that the value as a whole is written unless you use the proper fences or synchronize it in some way.
He's right on assembly level of assignment, but the compiler is free to emit assembly that will tear. Some compilers might do that for optimization purposes.
The (C or C++) compiler is free to do anything because reading and writing a non-`atomic` variable from two different threads without synchronization is undefined behavior.