So you have a single widget (with the ActiveRecordSelections part attached), and want to render this widget in one zone or the other, depending on the type of user (teacher or parent),

A Widget is always added to a single zone. However, you can use Placement to configure where all the shapes are to be added to (local zones or global zones).
So one way is to create a Match element that matches your widget content type, and Place element(s) with shape attributes to designate a zone. Using the new / syntax, you can dispatch the Parts_ActiveRecordSelectionsForTeachers shape to one zone, and the Parts_ActiveRecordSelections
to another. A widget emits more sdhapes, since typically a widget contains more parts, whose drivers emit shapes. You can hide those shapes by configuring them to not render (using Placement.info).

Another way could be to add two widgets: one widget in AsideFirst and another in Navigation. Then use a layer rule to show either one or the other. Your driver's logic would remain as is, because you still want to render one shape or the other.