This change permit to override the getOMClass on a sub class to by pass sometime the event configuration. Eg i have on Profile extends FosUser and one Employee extends the fosUser. Without this change the extends always load profile models else if i do EmployeeQuery
Yaml - if there are multiple keys with same name they will overwrite themselves;
PropelObjectFormatter calls Peer's populate methods which in turn calls getOmClass the model class from ModelCriteria constructor is not used;
Patch you provided changes some MyPeer::getOMClass to self::getOMClass which is essentially the same, its not static keyword (or am I missing something?).
even if you have working mapping FosUser => (Employee, Profile) I think it could cause problems: Propel cache checks only for ID so if you populate Employee with ID:1 and then ...->find() for Profile with same ID you will end up with Employee object.