Pandoc lives in a different tier because it gives you arbitrary filters so you can do any transformation you want on the intermediate JSON format. And it converts anything to and from that JSON format. So I prefer Pandoc based systems because anything the tool doesn't do that you want is probably implementable with a simple inline filter.
I agree with your preference, also largely because of filters. But note that the intermediate format is Pandoc’s internal abstract syntax tree, not JSON (https://lwn.net/Articles/1064692/).
The older filter mechanism acted on a JSON serialization of the AST, but the current recommendation is to use Lua filters that work with the internal AST directly.