Yes, this is expected, as the model defines, if the parameters are frozen or not, while the state_dict stores their values.
You can thus create a new model instance, freeze/unfreeze parameters as you want, and load the state_dict afterwards.