I really agree with HTML based UI solution, too. I think Mr. @Shaarigan provide a really good point of view for this solution. And it will be much suitable if you already have a JS based script system because it will be much easier for dealing with UI and background logic instead of a string-based event handler.
I want to add a little more information for Unreal. Unreal engine 3 mixed a lot of technologies for UI. However, for Unreal Engine 4, it used a totally self-written UI framework called Slate which is rendered by Unreal engine's own rendering system. This UI framework also used in the games with a higher abstract called UMG. UMG can be edited by a visual editor but Slate cannot.
Actually, the UI solution for your engine is based on a lot of things. Some of them are:
What's your engine for?
Is it a generic engine or just internal usage or just personal?
Does your game need a complex editor?
What's your team's background?
Could they handle a large UI framework's development or they just want to reuse existed framework?
Do they think it is valuable for a complex editing system? Or they think an in-game editor is enough?
We can provide our own ideas. But the best solution can only be determined by yourself based on your own situation.