LLM output sort of “vendors in” smart macros (for lack of a better description) by saving the actual output of the LLM. In that sense, they serve different purposes.
Yes, LLMs are more like offline code generators that can't be reliably re-run. So the very first step of producing the code is "easy", but after that you have lost that ease, and have to read and maintain the larger generated output.