The Bind operation to the SerializedObject is done automatically, but is executed after the CreateGUI call, to allow users to create their UI fully before we bind it.
Binding a SerializedProperty to a field will always trigger a value change event, because the value is now coming from the serialized data and we need to inform users that this as changed, even if the value is the same. As a result, this value change after initialization of PropertyFields is expected. Still, we are planning to improve this in future versions.
A workaround to skip it is to schedule the registration to the next update like so: myPropertyField.schedule.Execute(/* registration */);