When logging in via xdm/kdm/gdm any settings from /etc/profile, and /etc/profile.d/* silently vanish. However e.g. /etc/X11/gdm/Sessions/* get run and whithin these scripts the settings are still there.
It turns out that the observations I made are actually slightly different: I noticed the whole thing because I modified /etc/profile.d/mc.sh so that mc was passed an additional parameter and this parameter (and the whole mc function) didn't show up in an kvt/xterm/gnome-terminal. Close reading of the bash man-page revealed that one needs to explicitly do "export -f <function name>" to get the function in child processes.. Summary and component changed to reflect this.
This appears to not be a problem: exporting names so that will be passed to children is the behavior of bash (and other shells).