It is less zram, and more block I/O scheduling congestion on Linux in general[1]. The machine thrashes and becomes unresponsive under memory pressure as I/O requests flood the disks, whether it is for swap, or unpaging and re-paging file-backed storage (open shared libraries, etc.), or simply evicting frequently accessed files from the file page cache.
I run my personal workstations and laptops without swap, and with earlyoom[2], which results in applications getting killed before the machine reaches unresponsive state. I can only afford that because I trust my tools (vim, emacs, firefox, but most likely firefox) would not lose my session if they shutdown unexpectedly. I turn earlyoom off when I play games where I know memory usage will grow suddenly, but the game won't reach the limits of my machine. You can also whitelist specific applications in earlyoom, if I recall correctly.
Some people claim success configuring the kernel to use different I/O schedulers, but I haven't tried that yet.
[1]: https://lwn.net/Articles/682582/
[2]: https://github.com/rfjakob/earlyoom