Because '?' on it's own (without '*' or '+' in front of it) says "zero or one" of the preceding element.
So "colou?r" matches either "color" or "colour" but not "colotr".
As I suggested last time, get a copy of
Expresso[
^] - it's free, and it examines and generates Regular expressions.
It would have explained this to you!