Is there anything in the language specifications (mainly C++ in this context, but is this an area where C and C++ are going to diverge, or is C likely to follow suit?) that prohibits spurious writes to a location?
No, in both languages. The reason is there isn't a way to observe it, if there were, then the answer would be yes.
Volatile for example provides a way to observe it, and in that case, the spurious write is prohibited.