To provide a distinct type for UTF-8 character data vs character data with an encoding that is either locale dependent or that requires separate specification.
To enable overloading for ordinary string literals vs UTF-8 string literals (since they may have different encodings).
To ensure an unsigned type for UTF-8 data (whether char is signed or unsigned is implementation defined).
To enable better performance via a non-aliasing type; optimizers can better optimize types that do not alias other types.