Самый большой недостаток, который я могу вспомнить, заключается в том, что вы можете вызывать буквально любой метод / свойство в мире для динамических типов.
например, подумайте, какого черта было бы обновить ваши тесты, если ваш API изменился - вы все равно все тесты скомпилируете, однако они все умрут с ошибками времени выполнения, если попытаются применить переименованные / удаленные методы.
Это, в сочетании с тем фактом, что вы теряете все Intellisense при работе с динамическими объектами, заставляет меня поверить, что динамическую библиотеку-макет будет сложнее использовать, чем что-то на основе прокси, например Rhino.