Debian Squeeze locale settings
Solution 1:
For future reference, I have found the problem, and it's nothing to do with Bash.
The problem is that sshd_config has the following entry:
AcceptEnv LANG LC_*
This allows my local environment variables named LC_whatever (including LC_CTYPE, the problematic one) to override remote settings so, when I connected, the ssh process set its environment variables accordingly, and the bash process dutifully inherited them. Nowhere in this process is there a check that the LC_CTYPE setting is valid on the far side of the SSH connection.
My temporary fix is to specify a known good LC_CTYPE in the specific command I run on the far side. I don't know what the "correct" solution to this is.