But as long as there is some nn.Parameter the result will require grad so not sure why is that necessary?

The output of the layer yes. But for the first layer, the input does not. And it is a limitation of the checkpoint module that at least one input needs to require gradient if you want to be able to backprop through it.

By accomulating gradients I mean several
forward and backward passes without calling zero_grad between them.

No it should not make any difference.