Depends how it's backed, how static it is, and so on.
The lisp runtime may fit in 20 MB, but not every language's runtime is so compressible. It may be smaller if one used something like C#/.NET where it's reasonable to assume, on windows, that everyone has specific common versions of the runtime laying around.
And then there are things like libraries. How dependent on the state of the OS do you want to be? Do you bring your own copy of SDL, or do you rely on it being installed? Even choice of graphics library can make a big difference, did you use something like DirectX which the OS will have all ready for you (assuming it supports it of course), or do you use something like OpenGL/Vulkan and invariably have to bring your own copies of various things like shader compilers and texture compression libraries.
In this case it's because it packages it's own copy of the JRE (which makes up more than 2/3rds of the contents). Which makes plain the greatest failure of Java, it was never a universal execution environment. Which is why every program ships their own copy of it and users no longer complain about "Update Java" notifications, or dealing with incompatible Java environments.
Custom Java runtimes can be generated using jlink [1] which take a fraction of the space needed for a “full” JRE. I have some applications packaged like this and the Windows installer exe, generated using NSIS, is under 15 MB.
Sure, but then you have to add back all the Java libraries they then used ontop of it. I assume the developer also used a tool like this to cut it down, the issue of bundling the custom Java runtime was never the size, it's that java was never supposed to need to do it this way (not that that is the end user developers fault of course).