As I understand, Ubershaders are huuuge Shaders that can be used instead many small ones. That's why they are smaller, but apparently. I still don't entirely understand why its better.
Just like JavaScript or Python or Lua can be interpreted instead of compiled.
I'm not sure what you mean by that. Those are script languages that are shared by its source code. They still need to be compiled. Shaders are also just source code that need to be compiled, they are script languages too. Python compiles to Bytecode, that sits in between the final compilation and the source code, basically a cache. Modern JavaScript engines on the other hand uses JIT, Just-in-Time compilation which only compiles what is needed right now.