The desired interface would be if MODCB provide a "modify form" (MF=M). Your use case is exactly what the modify form is for. However, MODCB (at least the z/OS MODCB) doesn't.
So your choices are between an extended if-then-else for every combination you want (obviously very unpleasant) and building the parameter list yourself. You asked about the downside of doing so? Basically, that you have to get it 100% right or all bets are off. If you go that route, you should check byte for byte and register for register that what you build is what the macro would have built The other downside is that you are in unsupported territory (at least would be for z/OS). The interface is the executable macro. But at least if you got it 100% right you could reproduce any problem using a real macro invocation such that it would become reportable. Peter Relson z/OS Core Technology Design