So I’m neither of the two, but if you allow me to give a shot:

there is no inherent need to define two optimizers for this, but nothing keeps you from doing so if you want.
if you do this and have optimizers with state derived from gradient statistics (plain SGD hasn’t, SGD with momentum, Adam, … have), the optimizer will only see the gradient statistics of those used with its step. This could be desired (because it implicitly equilibrates the loss gradients when used with adaptive optimizers) or non-desired.
The more common method is to make it a joint update.

Best regards
Thomas
P.S.: It is generally preferred to not tag people. While they invariably are have the best answers, they don’t scale arbitrarily and it’s best to have them as jokers for the hardest questions.