На этот вопрос сложно ответить, и он может быть закрыт как субъективный. Это зависит от того, что вы делаете, и от того, поддерживает ли масштабирование его для существующего компонента меньше, чем для переноса целого нового компонента (унаследованного или нет) и всей сопутствующей работы по поддержке.
Например, предположим, у нас есть текстовое поле, в котором мы всегда хотим, чтобы текст был зеленым. Мы могли бы просто установить свойство шрифта для текстового поля и сделать это, это было бы просто и понятно, и не нуждалось бы в пользовательском компоненте. Однако что, если бы мы хотели, чтобы он всегда был зеленым, не изменялся и применялся независимо от того, что может быть помещено в текстовое поле? Для этого потребовалось бы больше кода и определенное количество проектных работ в приложении, или мы могли бы создать собственный компонент, который бы выполнял эту работу за нас, и отображать его в виде текстового поля для всех, кто его реализует. По сути, упрощение развернутого кода (путем его скрытия внутри элемента управления) и повышение чистоты всего проекта. Если нам нужно только это текстовое поле в одном месте, оно, вероятно, излишне, однако, если это текстовое поле имеет ключевое значение для нашего приложения, оно может стоить времени.