The subsetting ops do a nice job of parsing out the expression so I can see their use when metaprogamming is just analyzing an expression and then goes and builds a new one or just executes some code based on the analysis.
But I don't see how, even with set_expr, you can modify an existing expression, for example change the + in the expression 1 + 2 to a -. It seems like mut_node_ and friends are the only way to do that.
Also the strings you get with get_expr and subsetting are not formatted all that nicely and need some addition processing to make the expression look like the expression.
But maybe I am missing something here so I'll do a bit more digging.