I was sort-of familiar with the demo scene in the 90s, and it’s true, they were pretty amazing. Sometimes I wonder where The Future Crew is now.
As far as “modern coding techniques” causing modern-software bloat, though, I beg to differ. A lot of those demos were written in C, not assembler. The vast majority of the increase in size of executables is due to feature-bloat, not code-bloat. That is, your word processor is large not because the compiler used to write it is inefficiently implemented, but because it has about 10,000 features and options that you’ve never used. The demos, on the other hand, while neat, show you every single feature they’ve got in just a few minutes. They’re a lot of fun, but they just don’t do that much. I’ve spent far more time than I’d like to examining the assembly output of a C compiler, and most of the time, there just wouldn’t be much to gain by writing the code by hand instead.
As far as games go, they’re not always as large as you’d think. The executables for the Quake games were all around 500K, IIRC, meaning you could .ZIP up all three and fit them on your single floppy with room to spare. (And they were written in C also, not assembly.) It’s the already-compressed graphics and sound, as others point out, that take up the vast spaces on a CD-ROM.