Why do we not use CFGs to describe the structure of lexical tokens?
You don't use CFGs because typically lexical analysis can be performed using regular automata, and these are faster than context-free parsers. It's a question of efficiency.