@ptrblck Thanks for your explanation!
In theory one could use register_parameter to overwrite weights, eg:
import torch
module = torch.jit.trace(torch.nn.Linear(10, 10), torch.randn(100, 10))
module.register_parameter("weight", torch.nn.Parameter(torch.ones(10, 10)))

And expect it to be used by the ScriptModule. This seems to work fine in non-scripted modules.
But there are other ways to do it anyway.