I am willing to bet that the effects have long blocking sequences that prevent the code returning to loop() when they are complete, if ever, thus preventing the frequent reading of an input to change effect from one effect to another
This topic Push button to switching Led effects is also probably relevant