Because you don't read the button there. You only use the value that was read at the beginning of loop(). The situation will improve (but not be perfect), if you actually read the button in cycleMaintenance().
The search term that you need to solve your problem is something like "arduino multiple things at the same time".