How frequently do you need to poll UI buttons before they are perceived as laggy?
The short answer is that you have 100 miliseconds to respond to the user if you want them to feel the action occurred instantaneously.
According to Jacob Nielsen in his book Usability Engineering, from 1993, which is considered an important reference in Systems Usability and User Experience:


0.1 second is about the limit for having the user feel that the system is reacting instantaneously, meaning that no special feedback is necessary except to display the result.


He also mentions that this basic advice regarding response times has been about the same for many decades [Miller 1968; Card et al. 1991].
I've taken this citation from this article: Response Times: The 3 Important Limits, also writen by Jacob Nielsen.
Note that in this time you must include all time taken to read the button press and give feedback to the user.
Other response time thresholds that are important for user experience, from the same source, but that were not mentioned directly by the OP are:


1.0 second is about the limit for the user's flow of thought to stay uninterrupted, even though the user will notice the delay. Normally, no special feedback is necessary during delays of more than 0.1 but less than 1.0 second, but the user does lose the feeling of operating directly on the data.

10 seconds is about the limit for keeping the user's attention focused on the dialogue. For longer delays, users will want to perform other tasks while waiting for the computer to finish, so they should be given feedback indicating when the computer expects to be done. Feedback during the delay is especially important if the response time is likely to be highly variable, since users will then not know what to expect.