Currently every activity created on a project can be referenced by any lesson. This design comes directly from Opigno and wasn't really verified.
A couple of issues:
When teachers add activities to lessons currently all possible activities are displayed (or only current user's activities if permissions are limited) which can be a lot.
An activity can be referenced by multiple lessons so editing it mean changing multiple lessons.
Proposed resolution
Allow referencing only unreferenced activities to a lesson (Lesson activities field validation constraint plus Views filter that filters for unreferenced activities only).
Add a "Is template" boolean field to an activity (not sure if that name is accurate enough). If the value is TRUE, the activity is cloned when referenced by a lesson.