I agree with this approach, as long as you keep the paradigm of the split between an array part and an hashed part. However I'm not even convinced that this is the best way to handle tables, the benefit it gives for a supposed optimization of speed or access time or memory allocation/GC is quite doubtful. And it has brought various bugs or instabilities or incompatible behaviors.
A safe implementation should use invariants, but Lua does not fix them reliably. I'm now convinced that it is a problem to create a good ecosystem of reusable libraries. And the obvious symptom of this is that most projects we eloped in Lua are stocked to a si gle version and refuse to upgrade. In fine, o'er versions are left unmaintained, security holes are found but not fixed in versions that application supports, or this effectively cause many forks to be developed or maintained separately. This is bad for the long term evolutions of Lua. The only safe way is to remove the unsoefied behavior of tables.