Because if you do $!eval() then the non-evaluation of the first parameter behaviour that makes $eval() useful is lost.
ie.
timer 1 1 $eval(echo -a my name is $mnick aka $anick , -1) would (hypothetically) result in my name is $mnick aka $anick being echoed.
However if you use timer 1 1 $!eval(echo -a my name is $mnick aka $anick , 0) then you will see that because $eval() is no longer being evaluated $mnick and $anick are now being evaluated and you get my name is MyMainNick aka MyAwayNick. So, to make up for that you have to use !'s against every identifier inside $eval() aswell, leading to timer 1 1 $!eval(echo -a my name is $!mnick aka $!anick , 0) - completely defeating the point of using $eval().