As someone who has used both options, I'd say it depends on what you want to do.
Unity is great because it has physics, model loading, 3D etc. already in there, and you don't have to deal with Objective-C or XCode, which are both pretty irritating. It also gives you out-of-the-box level editing, and all sorts of great goodies like that. Torque is similar, and I've never used Shiva. Either way, you get a whole lot here for a pretty cheap price.
So what are the disadvantages? Mainly three: First and most obvious is that you've got to pay a few hundred dollars for these apps. Second is that every distribution comes with a lot of useless coupled information - increasing app size and initial load times. Third is that you've got to rely on the Unity guys to resolve any possible memory leaks, bugs, etc. that their package may have - there's no fixing it yourself. Coupled with that is that you need to wait longer to have a version that matches the current iPhone developer seed. Another potential disadvantage with this is that you're limited to the efficiency of the Unity programmers - their code may be bloated and slow for all you know, or you may have a better way to do things.
In the end the question is whether you just want a simple sprite-based 2D game, or if you want a 3D game with physics. Whether you think you're good enough to write some efficient game backbone, or if you don't think there's any chance you can do better than the Unity guys. In a lot of cases you might know less than the Unity devs, but you will be able to jump a few redundant obstacles that apply only to your own game, thereby making your code better for it.