This basically summarises my position, though in my case it’s the extra years of C# experience that have helped sway me (C# already had these operators for years before the Python or JS proposals, and the movement since then has been towards non-nullable types that can never be null).
Ensuring that functions always return correctly shaped objects (or raise if they cannot) is a better idiom. With ?., API designers will assume that their callers are happy to deal with the occasional None and will design lazy/slack APIs that return them instead of properly avoiding it.
(I’ve always gone back and forth on ??. Because empty lists fail the default argument def f(o=None): o = o or [] pattern, I’d kinda like o = o ?? [] to only coalesce None, but then, chances are that fixing default arguments would solve even more problems without creating new ways for API designers to slack off.)
Anyway, +1 to whatever Laurie says on this topic.