For info, by default, the Register snippet code differentiates users that are active from not active.
If the existing username is in the database but is NOT active, then the subsequent registration will replace the existing one. However, once a registration becomes active (by the user confirming the registration via the email link), then a duplicate will be blocked. So, I suspect that when you were first trying this, the users that were being 'updated' were in fact inactive.
You can change this setting as an additional parameter to the Register snippet call. Mine for instance is:
[[!Register?
&validate=`username:required, fullname:required, email:required:email, password:password_confirm=^password_confirm^,
username:checkExists`
&placeholderPrefix=`reg.`
&usernameField=`username`
&submittedResourceId=`11`
&activationResourceId=`12`
&activationEmailTpl=`lgnActivationEmailTpl`
&activationEmailSubject=`Thanks for Registering!`
&usergroups=`WebUsers`
&removeExpiredRegistrations=`0`
]]
You will see the additional final 'removeExpiredRegistrations' - set this to `0` and you may get the results you may have been expecting.