Note that if your Sender ID changes, Google Play Services's com.google.android.gms.gcm.GoogleCloudMessaging.register()
method will keep returning the original registration id regardless of the new Sender(s) ID. You would need to invoke same class' unregister() method for Google Play Services to refresh and wipe out previous stale cached values.
See API info here: com.google.android.gms.gcm.GoogleCloudMessaging.register()
As an alternative, you can always delete app's data or uninstall-reinstall as noted in a previous answer but this is something far from acceptable in a production environment.
In case you have changed GCM settings and your Sender ID(s), apps must know that they need to unregister and register anew into GCM. One simple way to achieve this is pushing a new version to the Play Store and let users download the update and have this version do the work at its first execution, albeit this will not count apps that for some reason don´t get updated.
On top of that, if you are storing registration ids in preferences or a database, don´t forget to refresh its value when the app gets updated because updates could imply id regeneration and it could be the case that your code and not GCM is the one that is wrongly caching previous ids. Follow general guidelines here:
General client-side implementation guidelines