Art,
It appears to be related to the DAE and its index reduction. I would contact tech support to see why this doesn't work. I even tried to force a[t] to take on discrete values of -1,1 and it failed:
DiscreteVariables -> {a \[Element] {-1, 1}}
It seems that the DAE solver is taking over and solving for a[t] ignoring its initial condition and WhenEvent. On non DAE problems this works fine. I'm guessing that the index reduction is somehow taking over a[t].
I hope this helps.
Regards,
Neil