Why should an average programmer learn automata theory?
Automata theory is rarely used by practicing programmers today.  It is in principle useful for building compilers and parsers (though most developers don't need to do that today, and often use tools to help them).  Some of the concepts can be useful for building state-machine based systems, which are widespread (including, e.g., embedded systems), though it's not clear you need to know all the ideas from automata theory to be successful at that.  Also, many people study theory even if there is not a direct practical application.