Unlike subtyping, sum types are bounded - you can't add new variants without modifying the originally-defined type.
That's a huge difference in terms of code architecture - it enables things like exhaustive pattern matching, and allows the programmer to enforce stronger invariants in the code.