I think the +/- only work when bound by themselves, so you should be able to do:
alias +firehide "+attack; hand 2"
alias -firehide "-attack; hand 0"
bind mouse1 +firehide
Though I'd recommend having an alias to just swap hands manually rather than doing it every time you fire, as it uploads the entire configstring when switch hands, meaning wasted bandwidth. I have something like this (don't have my config here, so I'm not sure this is 100% correct):
alias switchhand1 "hand 2; bind mouse2 switchhand2"
alias switchhand2 "hand 0; bind mouse2 switchhand1"
bind mouse2 switchhand1
Then it swaps hands every time I hit the right mouse button. Then I can check briefly to see if I picked up the right gun and leave it centerhanded.
Wow, "centerhanded" passed the spell check.