It's not worth the requirement. TimerUtils is the most common library requirement and to make it require Table on top of that is too much. Even with static if's and as an optional requirement it wouldn't be worth Vexorian's time as he apparently hasn't got the time to see if the update even compiles.

I agree it does look cleaner, but it does not reduce the amount of compiled code but significantly increase it. JassHelper makes a copy of the init function that returns false, while keeping the original version which returns nothing.

If you make the struct "extend array" then a module init only creates a "constant integer structName".

Why use two booleans when two out of four combinations are not useful? A single boolean would suffice.

I identify a potential error in your implementation (likely in the original as well): you assume that the first timer that gets created in the array version of the initializer will get the lowest handle id, which isn't necessarily the case if another library that initialized before this created and then immediately removed some handles in the same order. I know, that's incredibly unlikely, but not impossible.

Also, you need to pick two colours for the names of your flavours, it's tradition! :) It seems your code is the equivalent of the original blue and orange flavours, so something similar to those.