Yes, the mechanisms are completely different, but from a programmer who hasn't yet had the Lisp revelation, they appear similar. The goal here is to write higher-level code to more clearly describe your solution to a problem. Ruby lets you get part of the way there, which is often good enough, but it hits a wall that macros cross without even glancing back.
Ruby [...] hits a wall that macros cross without even glancing back.
I'm not very comfortable picking sides like that - they're different things (as I said in the other post - horses and bicycles). Which is better for creating abstractions is a very difficult question, which I don't think we quite have the vocabulary to ask correctly.