Wat je doet is de beste en meest optimale manier om het te doen in Mongo. Ik zit in een vergelijkbare situatie en na alle mogelijke implementaties van het N:M-ontwerppatroon te hebben doorlopen, ben ik ook tot dezelfde oplossing gekomen.
Blijkbaar is dit geen mongodb-ding, maar meer een concept van NoSQL, waarbij de minder veranderende gegevens (cursussen) afzonderlijk kunnen worden bewaard. En aangezien het verwijderen van een cursus niet vaak voorkomt, is het haalbaar genoeg om alle records te doorlopen om deze te verwijderen.
Aan de andere kant zou je het kunnen laten zoals het is. Negeer in je toepassingslogica gewoon de waarden van cursussen in het studentendocument die helemaal geen reference_id in het cursusdocument hebben. Maar in dat geval moet je ervoor zorgen dat oude verwijderde Course_id's niet opnieuw worden gebruikt.
OF gebruik gewoon de verwijderde vlaggen op het cursusdocument en behandel al het andere in uw toepassingslogica.