The C++ standard library actually has a large number of "empty" types. std::monostate, std::nullopt_t, the std::in_place_t tag types, etc. They all have different names because they are used for different purposes.
You should not have one all-purpose "empty" type, because seeing the name there will tell you what the code is doing. std::optional<T>(std::in_place, ...) communicates a lot more about what is going on than std::optional<T>(std::monostate{}, ...).
Indeed, if a single type were used, you wouldn't be able to differentiate between std::optional<T>(std::nullopt) and std::optional<T>(std::in_place). These are two very different function calls.
The name you use should be whatever makes the code which uses it readable.
As for canonical conventions, the C++ standard uses certain conventions based on how you're using it. Types that the user is expected to type directly into their code, like std::monostate, are named normally. You're expected to create variants that use monostate in the type.
Tag types, used to select constructor or operator() overloads, will typically end in _t. But they also have an inline constexpr variable defined for them that doesn't end in _t. For example, std::nullopt_t is the name of the type, while std::nullopt is the name of a variable of that type.
This is particularly important, as std::nullopt_t's cannot directly be constructed by the user. You can copy std::nullopt instances around, but you cannot create a std::nullopt_t instance directly.
That last bit is something the standard is a bit inconsistent about. Most tag types don't have this requirement; you can invoke std::in_place_t{} all you like. But std::nullopt_t does.
Examples from your comment:
as the default tag in struct templates, as the default tag in function templates
I don't know what a "default tag" is in this context, but I would probably call it default_t. Since that spells out the meaning of the thing.
as the "no output" tag in a processing pipeline
I would spell this void or if that's not an option, drop or discard.
as the equivalent of Python's None in some generic code
That already has a name: nullptr. If it is a non-pointer that may or may not be present, it's spelled std::optional<T>. And if you really are in generic code, std::nullopt itself works as a way to indicate that the user conceptually provided an empty optional.
These are different uses with different interpreted meaning. Therefore, they should not have the same name even if they're all implemented as equivalent types.