The timer code is an absolute mess. I started looking into making additional statuses that worked off of timers (Slow/Haste, Breaks, etc). I don't think it's impossible, and I have some ideas, but it would require a near complete rework of the system.
Timers in FF5 have one of three states (determined by bits in 3CF1): active, ending, and inactive. This bit of code returns true if the timer is active or ending (ie, "on"). It's run once for each timer; the only time this return is ever checked is if we're looking at Stop or Paralyze. Stop prevents other timers from changing state, and Paralyze stops just the ATB timer from the same. Incidentally, this is why the order of timers is what it is: Stop goes first, then the eight timed statuses, then Paralyze, then ATB. You can just run the same function eleven times, check the return as needed.
If I had to guess, once upon a time this function checked Stop, then checked other statuses. They realized they could reuse the code with a return, and this little bit escaped notice.
For further speculation, I'm fairly certain the reason the timer system is a bit of a complicated mess is because the VBlank will interrupt it, and so redundancies needed to be built in.
[EDIT] As a point of clarification, the order of the timers is as follows: Stop, Poison, Reflect, Doom, Mute, Leak, Old, Regen, Singing, Paralyze, ATB. I've seen Charm listed as timer #3, but this isn't correct (for players at least).