Используется отражение, которое может быть медленнее, чем обычный тип доступа. Другим недостатком является то, что при просмотре сигнатуры метода вы видите объект и для конечного потребителя этого метода не всегда может быть очевидно, что он должен поместить туда, потому что объект может быть буквально чем угодно:
Когда Intellisense показывает:
BuildXPathQuery(object attrs);
Вы действительно должны догадаться здесь, если это не очень хорошо документировано (например, HTML-помощники ASP.NET MVC используют аналогичный подход для построения атрибутов HTML на элементах DOM).
Это такой подход Rubyist, который мне нравится :-) (необязательные аргументы и хеш-таблицы)