I think this is because ")" is treated as a token delimiter. So "(foo)bar" is treated the same as "(foo) bar" (that is, bar is treated as a separate word). So "(foo)*" is really parsed as "(foo) *" and thus the * is treated as the start of a new word.
-Michael