Nutsy:

Hence, would it be safe to assume that the instance of Optimiser is the one setting the requires_grad flag of all of the model’s parameters to True ?


No, that’s not the case.
Model.parameters(), which is passed to the optimizer, will return the parameters with their requires_grad attribute. Neither the optimizer nor the call will change it.
In your code snippet you are not using the state_dict method, so I’m unsure if I misunderstand the question.