Well, one reason is that to_string() is ancient, but into() is fairly new. Another is that 'to' and 'into' are two different things: to_string() takes its caller by reference, and produces a copy. into() takes its caller by value, and so consumes it.
I can't say this is very helpful; it's hard enough learning the one way. Why have `to_string()` if we have `into()`?