The way I see it working in 2017.1, %OverrideGuidAssignment only sets the in-memory value of the object's GUID to the value passed as the argument and returns the same value.  It does not validate the value.   If the object already has a GUID, it will not be changed.  New objects for which the user did not provide a GUID will have one assigned with $system.Util.CreateGUID() unless the user invoked %OverrideGuidAssignment(userGUID) before saving.

In order to know if the intended assignment was successful, you must compare it with the object's GUID after save to see if the assignment was successful or not.  If they are different, then it was not overridden, probably because it was not a new object.