The ETL system we work in, as is obvious from my earlier comments I guess, is also not a code generator - it's a runtime that loads and executes jobs (sequentially executed steps) and transformations (steps running in parallel, processing a flow of data) from XML definitions.
Elixir, on the contrary, IS a code generator (BEAM bytecode).. That's ALSO being executed in a runtime.. Any other high-level programming language is one, or both, of the above. The more useful distinction is probably if you can do debugging, introspection etc in terms of the language / model itself, rather than the generated code.
With regards to pros and cons, I'll say that even a fairly complex ETL job in our environment can be understood at least on a higher level in just a few minutes. Humans ARE visual beings. That's why I'd love to have a good DSL with round-trip conversion, so that you could get the best of both worlds.