"Why would you add another function (because explict casts are just functions anyway) that does exactly the same thing as ToString()?"
For the same reason that you shouldn't just call Dispose() because you know that it'll just call Close() on the object. You should still call Close() before calling Dispose(), because you shouldn't rely on the fact that Dispose does exactly the same thing.
For the same reason, I don't like calling ToString() on an int to convert it. ToString() is used to provide a human readable string representation, for debugging purposes. Sure, it may return exactly what I want in this particular case, but should you really rely on that? Who says they won't return more information about the object than just the numeric value?
I'd rather use Convert.ToString(int) because contrary to int.ToString(), it's actually intended to be used that way. I have no way of knowing wether int.ToString() is going to return other information about the int than just its value, whereas Convert.ToString(int)'s purpose is to just return the int's value as a string.
Anyway, good points all round. I guess converting ints to strings is one of the things I do most, and I'm just clamoring for some syntactic sugar on it.