julia> dump(Type)
UnionAll
var: TypeVar
name: Symbol T
lb: Union{}
ub: Any
body: Type{T} <: Any
The default Type is defined using T as the type parameter symbol.
julia> dump(Type{S} where S)
UnionAll
var: TypeVar
name: Symbol S
lb: Union{}
ub: Any
body: Type{S} <: Any
Both cases should be functionally the same , hence == holds, but since the typevar symbol is carried around they are not identical.