Now, it's a huge burden on Firefox and it's good to finally see progress on this front.
No, back then Mozilla was trying to do the entire UI logic in JS. That was the whole point behind reusing the same JS engine for both: https://en.wikipedia.org/wiki/XUL
By doing so (running both the UI code and scripts from the internet on the same non-reentrant JS engine) means that only one gets to run at a time (either UI code or JS from the internet). That's why FF's responsiveness sucks at times, any long running JS script from the internet also prevents the UI code from running.
The JS engine should either have been reentrant (so UI code could run even though some random internet script was still running), or there should have been two independent JS interpreters loaded, one used for the UI code only and a second for all the JS from the internet.
The same asynchronous logic used to have multiple browser engines with multiple JS runtimes talk to each other could also be used for multi-threading while making shared, thread-safe datastructures of non-JS parts much easier.