If the language allows <whatever> := <new-value> --- if that compiles and executes --- then <whatever> is by definition a mutable place.

Once you introduce this misfeature, mutable places no longer have the property that they all record the assigned value and keep it until the next assignment.

Now, sure, you also don't have that property when you have operator overloading that allows assignment to be coded by the programmer; but that's a design decision under the programmer's control which affects only that code base, not the entire language and all its users.