No nxproxy. Just nxagent and nxnode, with nxnode using less than a meg of res - shared.
As I understand it, nxnode is a shell script, so it's no surprise that it consumes less memory than a full Xserver...
Why are you not running a nxproxy?
The nxagent should be the Xserver, so that is what should be compared to Xvnc. One theory why it consumes less memory than Xvnc is that it (AFAIK) is based on a very old X implementation, X.Org 6.9 or something like that. Back when we delived Xvnc based on that old implementation it was also more lightweight, consumed less than 10 MiB or so. But of course, it also lacked many modern X extensions.
It's not the VNC part of Xvnc that consumes the RAM; it's the X server.
I agree with you that small figures can turn into large numbers when you multiple with the number of users. But I still claim that even 28 MiB (RES-SHR, right now) is not a big deal if you are running a full, modern desktop environment and mainstream applications. These typically consumes much, much more.