To, co děláte, je nejlepší a nejoptimálnější způsob, jak to v Mongu dělat. Jsem v podobné situaci a poté, co jsem prošel všemi možnými implementacemi návrhového vzoru N:M, jsem také dospěl ke stejnému řešení.
Zdá se, že se nejedná o věc mongodb, ale spíše o koncept NoSQL, kde lze méně se měnící data (kurzy) uchovávat samostatně. A protože smazání kurzu nebude příliš častou operací, je dostatečně proveditelné, aby prošel všechny záznamy a odstranil jej.
Na druhou stranu to můžete nechat být tak, jak to je. Ve vaší aplikační logice prostě ignorujte hodnoty Courses v dokumentu Student, které vůbec nemají reference_id v dokumentu Course. Ale v tom případě se musíte ujistit, že staré smazané Course_id nejsou znovu použity.
NEBO stačí použít smazané příznaky v dokumentu kurzu a zpracovat vše ostatní ve své aplikační logice.