We use both approaches.
For writing & language arts courses with multiple sections (same course but different teachers), we make multiple individual instances of the course. These are session-based courses with set start & end dates.
For math/comp sci/science courses, which are individually paced and begin and end every day & also allow for postponements, we use metacourse and child course with student capability to view hidden courses in which they are enrolled AND with groups.
For this latter situation, we need to be able to shift students from one group (Instructor A) to another (Instructor B) in, say, Algebra I, if, when a student un-postpones, Instructor A is full. Thus, groups.
This is the limit of my understanding of metacourses, since my involvement is with multiple sections. If you need more about metacourses, I can ask my compatriot on the metacourse side to write a fuller explanation.