The Zen of Python claims "There should be one-- and preferably only one --obvious way to do it."
I think multiple string types go against that. It is the simplicity that makes it practical; not an argument of purity in my opinion.
To me what's important is that handling of encoding happens on the I/O barrier, and not anywhere else.
Practicality bearts purity.