This is new, but not necessarily unique. A lot of DSLs (rspec’s describe, context, and it features come to mind) take something analogous to an ident and a delimited token tree.
My thoughts are the opposite. In the long term, when there will be more implementations of Rust than just rustc, they will be able to share the same standard library. Anything else implemented as a pre-imported library they will also be able to share. So if macro_rules! or its successor are implemented as libraries, they can be shared by different Rust compilers, reducing portability issues. In general, anything that makes the core language smaller seems like it will help with fragmentation in the long term.
I would like a syntactic form for macro_rules macros which only matches a single pattern and is more lightweight than the current syntax.
What about macros without parameters? Usually you just want a const or a static, but maybe not. Could we have macro! foo => { ... }, invoked as foo! ?
This proposal sounds great, also!