IMHO, ECS would be better that an OO design for this problem
People often start learning programming nowadays with languages like Java and Python, which preach Object Oriented Programming as The Best Thing Ever and the Only Way To Do Things (Java especially). As people begin to code more, they often realize that OO is only one approach to problems, and often not the best. While it is the best way to do things in Java and C#, language features like closures, literal data structures, and a unified data structure (the table) make ECS and data driven programming in general great for Lua.
For GUI, I think ECS is a good idea, but to be more general, I think any data-driven design would be good for in-game GUI. It's easier to write shorter code, and as you said, easier to save to disk and read from disk. Most importantly, come time to make your actual buttons and text, you won't have to thing about how it works, you just have to send a Lua table to your engine.
In fact, you could probably throw the whole notion of ECS out the window if you're willing to give up some generality, and just make a GUI engine that takes a data structure of nested tables and renders it in the game.
I don't know if it is still in development, but karai17 had a project like this
here. It's is very general in scope, but if you look at the examples you will see what I mean. It is the complete opposite of doing GUI the way LoveFrames does, and more like HTML and CSS.
My two cents.