Well it's not just your game, it's the device. Consider the different speeds on the devices. Consider some have more things running in the background (jailbroken phones) and also consider that the iPhone itself tends to slow down after a couple days of usage due to memory leaks (which is why I reboot once a week or so) in Apples programming (unconfirmed report I read on a forum). All of these combined and it's simply too hard to guarantee a 60fps consistency throughout the WHOLE game.
Also, collision detection can be improved in other ways instead of simply doubling the FPS. You could add more iterations to the space for starters if you are using chipmunk and I'm sure you can do something like that in Box2D as well (though I've never used it).
I don't HAVE to cap your FPS but it's a very common practice amongst most devs. Consistency is key and as I said before, even the top games today cap at 30 and you can sure as hell bet they have more things happening on screen.
Take Killzone 2 for example, the game is BEAUTIFUL. Beautiful particle effects, and TONNES of mayhem on screen. The game is capped at 30fps and it looks and plays very smoothly. Yes, they might have been able to get 60fps but you can sure as hell bet it'd be damn near impossible to keep that consistent. And it might drop to something like 35-40 which is still higher then 30 but it's still feel more choppy and unclean bouncing around in some parts from 35-60 when compared to a consistent 30. I've even read your program becomes more prone to random bugs that are hard and annoying to fix if you don't keep a consistent FPS.
I wish I had the knowledge and logistics to back this all up but everything I know, I've read from articles and a few friends who work in the industry. I don't know the nitty gritty specifics unfortunately...take it for what you will but I strongly believe any iPhone game (ESPECIALLY with the inconsistency in device speed amongst other things) should be capped at 30.