С чего бы это плохо?
Очевидно, что было бы плохо, если бы уровни не-GUI вашего приложения, такие как уровень абстракции данных или бизнес-логика, пытались бы отображать элементы пользовательского интерфейса напрямую, потому что это противоречит многоуровневой архитектуре и ограничивает повторное использование компонентов.
Однако dll не обязательно соответствует логическому или функциональному прикладному уровню, это единица развертывания, которая может содержать что угодно, от ресурсов до кода и графических элементов. Фактически, вы можете объединить бизнес-логику и графический интерфейс в одну DLL, например, при создании и развертывании расширения приложения.