Is case needed? no, as you said if blocks can achieve the same. however semantically they provide a huge improvement, and for that matter you have to wonder why other "curly" languages choose for a
Code:
switch(){
   case:
   default:
}

construct to begin with instead of wanting to enforce a different approach "because it's more mIRCish".