If you think about it, it's a relatively complicated task but it could be a good experience building exercise that may help him design smaller, simpler, faster, and more efficient code in the future.I have a feeling you make this way to complicated.
I suspect no two programmers would agree on design. Refreshing multiplexed LED displays and sampling/debouncing switches at precise intervals is easily handled in the ISR.As I understand your project is to make clock. The most important thing here will be keeping the time. All that has to do with that, you put in the ISR. Less important things like updating the displays scanning the switches you put outside the ISR.
This really depends on the design. If you're refreshing a multiplexed LED display in the ISR then obviously you don't want to turn off interrupts.Some tips! When you are in the process of setting the time, turn off the ISR as it is not needed at that moment.
The moral, if any, is there are hundreds of ways to accomplish the same task.