Because Extension methods allow you to "extend" a sealed class by adding methods that look like they are part of the original class.
That makes them more readable when you use them in your code: as you show in your example.
Except...your example wouldn't work, and wouldn't do anything, or even compile! What you meant to say was probably:
public static string ToUpperString(string param)
public static string ToUpperString(this string param)