You're absolutely right, gdm/xdm/kdm should be running the login files 1 time.
We spent a lot of time fixing this several years ago, must have gotten busted somehow. Be sure there's a bugzilla...
I would've filed one earlier, but I honestly thought I must be missing something obvious :)
Is my thinking correct that this should be taken care of in the script /etc/xdm/Xsession (which is sourced by gdm and kdm as well as xdm) by having #!/bin/bash -l as the first line to invoke bash as a login shell? But then again, this would be the wrong behaviour for someone whose default shell was tcsh?
Anyway, shall I file a bug report against xorg-X11, or against a different component?
Cheers, J.