1. нельзя сделать option<option<T>> (легко получаемая ситуация при вычислениях внутри опшонов)
2. null не несет никакой информации о типе
3. в случае конкретно шарпа у тебя аж два типа нуллабельности, один другого хуже, друг с другом совместимы посредственно
4. везде, где они есть, подразумеваются как значение для дефолтной инициализации - привет опечатки и протекающие нуллы в ненуллабельную часть
5. лишний элемент языка просто потому что
можно было бы тогда, например, Result так же в язык вкорячить, или еще что-нибудь