From what I've seen in Jean-Michel's code the overrides feature is essentially a form with DB support and events. As an aside the events are clearly general enough to be defined as core events, override_created, override_deleted etc.
So, the module specific part is the form and DB and it should be possible to implement them as a local plugin. The plugin can add a designated overrides-managment link to the activity administration and the teacher will click that link from within the activity for adding/updating/deleting overrides.
The core module code only needs to get the overrides for the current user/group on instantiation. In modules that use an object class for the module instance this would be fairly easy and centralized. Afaict the lesson does exactly that to the effect that the overrides can be fetched and applied to the instance data in the constructor (or init method as its case may be).
More generally, if it is not essential to specify DB columns for the specific overrides, the DB support can work like config and be the same for every module that implements overrides.