Dedicated Electron-based apps are even worse than that: a separate set of processes running their own embedded version of Chrome.
No
“Are the runtimes accidentally bloat?”
Not accidentally
“Is it all the browser stuff and not the JS runtime per se?”
Basically, yes
“Or maybe just bad programming on the dev side?”
No
Essentially the reason Electron apps are so heavy is they run on a browser, not on an operating system.
In the beginning, programs ran directly on hardware, and things were good. (e.g. Pretty much every game would ship with a custom bootloader that knew how to address the hardware and exposed this to the program, you didn’t - couldn’t - have anything else running at the same time.)
Later on, programs ran on the operating system, and things were okay. Operating systems abstracted over all the possible hardware configurations in an acceptable way and users got the benefit of running multiple programs simultaneously without too much of a performance cost.
Now, programs run on the browser, itself a program running on the operating system. Because the browser wants to be a platform for any other program, it has to hook into almost every part of the operating system, so that it can support almost any program. This necessarily brings with it enormous bloat - in effect you’re running one general-purpose pseudo-OS framework per program.
At places I’ve worked there have been discussions about whether to use Electron. Something one dissenter said has stuck with me. “Imagine every Python module you imported ran in its own Docker container. You would quit, but that’s what we’re asking of users.”