Currently nocaseglob and nocasematch both control case insensitivity of RE matching (in lib/sh/smatch.c):
if (glob_ignore_case || match_ignore_case) rflags |= REG_ICASE; However, the documentation suggests that only nocasematch should have this effect. I'm guessing this behavior was in bash-3.1 for compatibility with bash-3.0 (in which nocaseglob *was* the documented way to turn on case insensitive RE matching, prior to nocasematch being added) but it doesn't seem to make much sense now.