Credo che la ragione sia perché i tipi esposti dovrebbero essere utilizzabili da tutti i diversi tipi di linguaggi (C#, C++, JavaScript forse più in futuro).
Quindi, se si dispone di una classe, l'uso di una classe viene sovrascritto in una nuova classe. Potrei voler dare lezioni di classe, che è fatto in una lingua diversa. Ma questo è un problema. Come si vuole sovrascrivere una classe base fatta in C#, per classe ereditaria fatta in C++? Questo non può mai funzionare, perché entrambi hanno implementazioni OOP completamente diverse e incompatibili.
Forzando le classi esposte a essere sigillate, rimuovi questo problema e assicurati che le persone non proveranno a fare qualcosa di simile.
Sono sicuro che ci sono molte più cose fondamentali di questo, ma questo è quello che mi è venuto in mente prima.
Il tuo titolo sembra essere in disaccordo con la domanda? ("deve essere sigillato" rispetto a "non consente la chiusura") –