What about Lua/Luajit?
In most scripting languages you have the interpreter binary and the (standard) libraries as separate files. But creating self-extracting executables, that clean up after themselves can easily be done by wrapping them in a shell script.
IMO, if low dependencies and small size is really important, you could also just write your script in a low level compiled language (C, Rust, Zig, ...), link it statically (e.g. with musl) and execute that.
And they do that for while gaining 0 XP?
In my head canon the people are sometimes just rusty and forgetful, because even if someone lives 100 year, that doesn't mean that they will remember everything or get better at stuff. That is why I think immortal beings that live aeons, can still be surprised or tricked. Being old doesn't necessarily mean that people are wiser.
Sometimes people just need the right motivation to improve themselves.