Такова особенность реализации класса TWinControl, на котором основан TButton
Код:
TButton = class(TButtonControl)
TButtonControl = class(TWinControl)
То же самое будет с событиями VK_TAB, VK_LEFT, VK_RIGHT, VK_UP, VK_DOWN, VK_RETURN, VK_EXECUTE, VK_ESCAPE, VK_CANCEL
Можно решить проблему, сделав наследника от TWinControl, где переопределить эти методы, и дальше переопределять TButtonControl и TButton, чтобы они создавались на основе нового класса...
Вот компонент - тот же TButton, только не меняющий фокус при нажатии стрелок