Ich glaube der Grund ist, weil exponierte Typen aus allen verschiedenen Arten von Sprachen (C#, C++, JavaScript und vielleicht mehr in der Zukunft) verwendbar sein sollten.
Wenn Sie also eine Klasse haben, dann überschreibt die Verwendung einer Klasse diese in eine neue Klasse. Ich könnte den Unterricht überbewerten wollen, der in anderer Sprache gemacht wird. Aber das ist ein Problem. Wie möchten Sie eine Basisklasse in C# überschreiben, indem Sie in C++ eine Erbenklasse erstellen? Dies kann niemals funktionieren, da beide vollständig verschiedene und inkompatible OOP-Implementierungen haben.
Indem Sie exponierte Klassen zum Versiegeln zwingen, entfernen Sie dieses Problem und stellen sicher, dass die Leute nicht versuchen, etwas wie das zu tun.
Ich bin mir sicher, es gibt viel grundlegendere Dinge als das, aber das kam mir zuerst in den Sinn.
Ihr Titel scheint mit der Frage nicht einverstanden zu sein? ("muss versiegelt sein" vs. "erlaubt nicht versiegelt") –