Това, което правите, е най-добрият и оптимален начин да го направите в Mongo. Аз съм в подобна ситуация и след като преминах всички възможни реализации на модела за проектиране N:M, също стигнах до същото решение.
Очевидно това не е нещо mongodb, а по-скоро концепция на NoSQL, при която по-малко променящите се данни (курсове) могат да се съхраняват отделно. И тъй като изтриването на курс няма да бъде много честа операция, е достатъчно осъществимо, за да преминете през всички записи, за да го премахнете.
От друга страна, можете да оставите да бъде така, както е. В логиката на приложението си, просто игнорирайте стойностите на Courses в студентския документ, които изобщо нямат reference_id в документа на курса. Но в този случай трябва да се уверите, че стари изтрити Course_id не се използват повторно.
ИЛИ просто използвайте изтритите флагове в документа на курса и обработвайте всичко останало в логиката на приложението си.