The number of losses and optimizers do not depend on each other.
E.g. you could use a single optimizer for the complete model to apply the same optimization method to all parameters.
The loss(es) determine the gradient calculation. Calling .backward() on each loss separately or summing the losses and calling backward once will result in the same gradients.