The ideal engineering solution, even for UIs, should be something that is abstracted properly, written only once, and then accumulates new features without any friction whatsoever. The new features rest on top of the platform seamlessly, giving users more options with no downsides.
A good UI, imho, is one that users can configure, it only adds new things and never take out existing features, and is robust, reliable and responsive. This is a serious technical challenge and most organizations are not setup in a way to solve this problem properly without the solution deteriorating and needing a rewrite... and yes in part it's because on the business side there is no perceptin that this is actually needed and so it is deemed easier to just rewrite and build something new every time.