Well, in the docs you’ve posted this sentence might be misleading:

Note that only layers with learnable parameters (convolutional layers, linear layers, etc.) have entries in the model’s state_dict.

So I see your point here.
Have a look at this simple model:
class MyModel(nn.Module):
    def __init__(self):
        super(MyModel, self).__init__()
        self.conv1 = nn.Conv2d(3, 6, 3, 1, 1)
        self.bn1 = nn.BatchNorm2d(6)
        self.register_buffer('buf1', torch.randn(1))
        
    def forward(self, x):
        x = self.bn1(self.conv1(x))
        return x

model = MyModel()
print(model.state_dict()['buf1'])

As you can see buf1 is also in the state_dict.
Could you create an issue on GitHub 10 and propose a change?
If not, let me know and I’ll do it.