I consider code and data to be mangled within the context of a macro.
In the macro definition we receive the code as data even though it looks like code when using the macro. Being able to use any lisp code inside of the macro definition, including other macros, makes for a mentally cohesive programming environment.
Not sure I ever used eval aside from some genetic programming experiments.