Well the sem AST is works better for generation (arbitrary nesting makes things easier) than it works for analysis (arbitrary nesting sucks).
Things might improve if macros gain a capability like "return expression X but as a side-effect add this T to some toplevel hidden type section" but this is all quite independent from NIF anyway.