Одна действительно приятная особенность методов расширения заключается в том, что они могут вызываться для нулевых объектов, см. Это:
myclass x = null;
x.extension_method(); // this will work
x.method(); // this won't
Жаль, что, например, большинство методов string не являются методами расширения, в конце концов
x.ToLower();
должно вернуть ноль, если x равно нулю. Я имею в виду, это было бы полезно.
Когда мне нужна такая прозрачность, я предпочитаю писать методы расширения.