in good old days you could use COM or a.out format which are literally just code instead of fancy headers etc. a.out binaries used less memory as well. I could run Linux Slackware with 2mb of ram instead of 4
.COM binaries yes, but a.out binaries do have a header, similar in size to ELF.
When ELF was added to Linux, I think it used a bit less RAM than a.out.
ELF made it easier to build and deploy shared libraries, and the design was more consistent at keeping code sections read-only despite run-time linking (the PLT stuff), so more RAM pages ended up automatically shared between processes by the kernel, compared with a.out.