It looks like on Oracle auto registration is re-run every time when the agent requests the list of active checks for hosts with empty meta data. Whereas on MySQL auto registration is re-run only when some of the hosts parameters (such as name, IP etc) changed.
zabbix_server/trapper/active.c contains the following code in get_hostid_by_host():
It checks DBis_null(old_metadata). old_metadata can be NULL or '\0' on MySQL but is '\0' for Oracle even in case of null value from the DB (judging by zbx_db_is_null)