`axes.margins` is a dispatcher/convince function  to `set_xmargin` and `set_ymargin` (which do not accept `None` as a valid input) and then calling `autoscale_view` to make sure everything updates.  I think the `rcParam` should match the lower level.

Adding a third parameter `axes.margins` will allow the user to set it up to be inconsistent and we would need to sort out precedence which can only lead to confusion.

Looking at margins again, I think it might need a bit of work as `axes.margins(.1, xmargin=.2)` will set both margins to .1, which is not what I would expect.  OTOH, this isn't really a documented call signature, but it will raise no errors.