The simple authentication module currently has a method where you can selectively allow self-registration for certain domains. If one wishes to use simple password authentication and self-registration as part of a stack of authentication modules, it is important to limit self-registration to only domains that cannot use an alternate authentication method (in particular, Shibboleth), or competing eperson records with the same email address can break authorization rules (in plain English, some folks won't be able to get to stuff they should be able to get to).
Clarification: the problem is not actually in duplicate e-mail addresses in the system, as that's not possible given the table schema, duplicates would cause an SQL exception. The problem is the automatically-created authorizations, which result from a shibboleth login (special groups logic, we've got a customized version of the shib authentication module, which assigns people to certain groups-
think 'campus'-based on their e-mail address). None of those group memberships are created if an existing eperson record is found. The net result is, people who have self-registered are never allowed access to things they should have access to (in our system, the problem is usually with ETDs, as they can have
specific access permissions set, at the request of the authors: campus access only, or System-wide access).
Simply put, if an individual can authenticate with Shib then you want to ensure that they do so in order that they get assigned to the correct groups. And the only way to do that is to turn off self-registration for certain e-mail domains.
This is a work in progress, I should be able to post a patch of the work so far later today.