This should be the case, as the step function iterates all groups, as you’ve already pointed out.
As a quick test you could seed the code properly and compare both approaches (different param_groups and different optimizers), which should yield the same weight update and states.