It seems that the grass type to use for a terrain is attached to the grass output node, and it is a material property, not a material instance property. The limitation there is that if I want to use the same basic material for multiple landscapes (tweaking various instance parameters), they must all have the same grass.
If this could be a material instance property instead, then each instance of my material could have its own kind of grass, which would (no pun intended!) rock for making different terrain types.
I second the request. Allowing the LandscapeGrassOutput material node to be converted into parameter would make it infinitely more useful in open world landscape scenarios, with instances being able to use unique grass types sets instead of just the master material one.
An alternative solution would be to make the Grass Type assets scriptable. For example, allow them to accept blueprints, instead of just static meshes.