The answer to the first question is yes, it will allocate. Params just encapsulates model parameters in various data structures (ordering vector and id set to be precise, see code for more details).
Re pre-allocating gradients - would be interesting to hear what the maintainers think of it. I would argue against it, because this would consume precious memory that could otherwise be used for temporary variables during model/gradient computation. In real life forward and backward pass takes so long, that pre-allocating a single array would not save much.