Change registration happens whenever there is any change made on the SObject(s) to which cache management listens.
There are triggers on the objects that capture the ID of the objects that were changed and register those changes in the cached API change table. A bulk insertion occurs if there are changes from a data upload, data migration, etc. The registration step only captures the changed object ID. False change captures are prevented with a pre-hook to the cachedAPIChange implementation class and custom logic that acts on the old data and on the new data.
With versioning enabled, the change capture mechanism remains as it is with the change object ID getting populated in the cached API change table with the change type as data. This data is then used by the Regenerate batch jobs.