OK, sorry for reusing terminology. This post from @John_McCall is what I was keying off:
The fact that a type is a tuple is significant in the type system; tuples behave differently from non-tuples in some ways, and there are things you can with tuple values that you generally cannot do with element values and vice-versa.
I guess since John calls them “element values”, “element types” might be a good term for non-tuple types. (It may be the case that all non-tuple types are nominal types, but since it’s possible to invent new non-nominal, non-tuple types in the future, I’m resisting using that term.)

My understanding is that
Void
/()
is an empty tuple.
That makes (_: Void)
a tuple whose single element is the empty tuple, which yields Peano arithmetic: 0 ≡ ()
, 1 ≡ (_: ())
, etc.
The thing I’m trying to figure out is whether that means it’s possible to match the ()
inside (_: ())
, and whether it’s therefore possible to match a type variable to the empty list within ()
, because that’s where the problems emerge from. It sounds like as long as (_: T)
is distinct from T
, this isn’t possible, because a pack can unify with the inside of (_: T)
, but not with T
itself.