That was explicitly rejected during the optional chaining proposal - because it would prevent people who WANT an exception.
The intention is for the ?. to explicitly mark each place where something might be nullish - it's not to avoid exceptions, it's to simplify the places where you want the short-circuiting behavior. It's optional chaining, not "safe navigation".
In your specific example, you really only need ({a: {}}).a.b?.c.d() to be safe from exceptions. And I think that's the beauty of how optional chaining is currently designed, it shows exactly where you expect a nullish value to be, and everywhere else you're indicating that you don't expect a nullish to ever show up there.
I'd also point out that, if a need does come to use ?. a lot in the same expression, it's not that verbose to do - after all, some languages' property access operator is two characters long by default (->).