I cannot reproduce the issue using:
class MyModel(nn.Module):
    def __init__(self):
        super().__init__()
        self.fc1 = nn.Linear(10, 10)
        self.my_modules = nn.ModuleList([
            nn.Linear(10, 10),
            nn.Linear(11, 11),
            nn.Linear(12, 12)
        ])

# setup    
model = MyModel()
sd = model.state_dict()

# make sure parameters are different
model = MyModel()
print((model.fc1.weight - sd['fc1.weight']).abs().max())
# > tensor(0.6268, grad_fn=<MaxBackward1>)
print((model.my_modules[1].weight - sd['my_modules.1.weight']).abs().max())
# > tensor(0.5863, grad_fn=<MaxBackward1>)

# load state_dict
model.load_state_dict(sd)
# > <All keys matched successfully>

print((model.fc1.weight - sd['fc1.weight']).abs().max())
# > tensor(0., grad_fn=<MaxBackward1>)
print((model.my_modules[1].weight - sd['my_modules.1.weight']).abs().max())
# > tensor(0., grad_fn=<MaxBackward1>)

Could you post a minimal executable code snippet which would reproduce this issue, please?