They can be made to toggle [for example] on/off-type System Variable values, or cycle through those with more than two values [e.g. the ISOPLANE setting]. One could easily be made to go to [Restore] a given Layer State if that's what "on" means, but what would "off" mean in relation to a Layer State? Go [back?] to all Layers on, or something? What if you didn't come to the current State from that condition, but from some other defined State? I'm not aware that when you have restored a Layer State, it knows which one you're in, and you could change any Layer conditions independently of State status subsequent to that, so I don't know of a way to trigger something based on what State you're in, if any.
EDIT:
Maybe a tool palette item could contain a variable setting -- Restore a given Layer State and set a variable to T[rue]. Next time you pick it, it could check that variable, and if True, go to whatever "off" means [see above] and set that variable to nil, but if not, Restore that Layer State and set it to True. But suppose you have one like that for LayerStateA and another for LayerStateB, and along the way you have used both, and both have their variables set to True. If A was the first one picked, then later B, and you're "in" B but maybe have changed some things since [turned on an individual Layer, made a new one, etc.], then what should it do if you pick on the Tool Palette item for A? Its variable would be True, so if your intent would be that it Restore A [since that's not what you're in], the variable-based approach would then not get you what you want.
Making Tool Palette buttons to go to particular defined Layer States is easy. It's the "toggling" part that I'm having a hard time imagining.
Kent Cooper, AIA