¿DFAs vs Regexes al implementar un analizador léxico?

(Estoy aprendiendo a escribir un compilador, así que corríjame si hago reclamos incorrectos)

¿Por qué alguien implementaría DFA en el código (goto sentencias, implementaciones dirigidas por tablas) cuando simplemente puede usar expresiones regulares? Según tengo entendido, los analizadores léxicos toman una serie de caracteres y producen una lista de tokens que, en la definición gramatical de los idiomas, son terminales, lo que hace posible que se describan mediante una expresión regular. ¿No sería más fácil simplemente pasar por un grupo de expresiones regulares, rompiendo el ciclo si encuentra una coincidencia?