They are two references that differ in type. It is a feature in Swift (and any strongly-typed language) that references are typed and when types differ, behaviors can differ. I understand you disagree with this design principle but it is an inherent property of strong type systems that have reference semantics.
> two distinct value type instances
“Nope.” There isn’t any such thing as a “value type instance” since instances are a semantic of reference types.
> objects shouldn’t be different depending on how you look at them
The “difference” here is only in the types, so this statement is equivalent to “references shouldn’t be different depending on their type.” This statement implies that types should be useless