> You want to use it sometimes, but not built your entire vocabulary around it.
Sure, which is why it should be an ordinary library type written in the language (and operated on with normal methods), not a magic special type with direct compiler support and custom operators.
> A variable being null is not a condition you can always a have a name for. You want to use it sometimes, but not built your entire vocabulary around it.
> You also don't usually want to pass wrapped nulls around, you just want nulls available in local state.
Why are you thinking in terms of "null" and "wrapping"? Think in terms of the business condition you want to represent. Often you have the possibility of some value being not-set or unknown in your data model - this comes up often enough that it's worth having a standard library type to represent it. "A variable being null" is not something that happens a priori, it's just an unfortunate representation certain languages adopt.