Shortcode not interpreted if parameter set

Not enough code in the question to pinpoint the problem, but I would call what you are trying to do “shady”. Usage of do_shortcode should be confined to extreme cases when it is impossible, or extremely hard, to do anything else, as using it is the less evil equivalent of using eval.

What you should do is to figure out the actual APIs the shorcodes call, and just call the API directly. Even if you don’t care about the performance gain, it will be so much easier to debug things.