What's happening is that Cocoa buttons just stick to the "PushButton" style.
However, since the actual button rectangle is changed anyway, Cocoa draws the button "vertically" aligned to the center of the rectangle.
That's why it seems as if the button is moving down.
(IIRC, on Carbon, if button is greater than certain size, it would change its style from "push" to "square". This will allow the button to grow).