Looks like you are correct. When I tried to type ls --somecrazy, it redirected stderr correctly. I can even confirm that with C. However, the strange problem is where does bash redirect its command prompt if it's not stdout or stderr?
I thought bash used stderr for displaying its prompt, because:
/bin/sh 2> /dev/null
everything will work fine, except no prompt will be displayed.
While:
/bin/sh > /dev/null
only the prompt will be displayed.
I started to believe that it has something to do with pty. (bash might be writing directly to /dev/pts/x instead of stdout/stderr) Can anyone confirm that???