О каких ограничениях вы думаете? Мне не особенно нравится то, как они обнаруживаются, и, в частности, то, что если расширенный тип позже получит метод с той же сигнатурой, он будет беззвучно вызываться без каких-либо предупреждений относительно метода расширения.
Есть несколько способов, которыми они не работают так, как хотелось бы - например, вы не можете написать метод расширения для типа делегата и вызвать его непосредственно в лямбда-выражении или анонимном методе - но это достаточно разумно.
Кроме того, я не знаю о существенных ограничениях - и я, конечно, не встречал ситуаций, когда в коде Microsoft применялись специальные правила для методов расширения.
Ваше последнее предложение звучит так, будто вы видели некоторые ограничения - не могли бы вы поделиться ими с нами?