This is an excellent explanation.
As you say, if we assume that my set of macros are the machinery, then truly my "BRAINFUCK()" macro is Turing complete.
Using this distinction between language and machine, how peculiar that a Turing Complete thing can be expressed using a language which is not Turing Complete itself.
The question is really - are these distinctions between machine and language always meaningful and without contradiction.