Earlier quoted context omitted.
First, having no swap means anonymous pages cannot be evicted, named pages must be evicted instead. Second, the binaries of your processes are mapped in as named pages (because they come from the ELF file). Named pages are generell not understood as "used" memory because they can be evicted and reclaimed, but if you have a service with a 150MB binary running, those 150MB of seemingly "free" memory are absolutely cruc…
Swapping anonymous pages can bring the system to a crawl too. High memory pressure makes things very slow with swap, while with swap off high memory pressure is likely to invoke the oom killer and lets the system violently repair.
Its less a bug but an understood problem, and there aren't any good solutions around yet.