iPhone apps are becoming more complex, which means rigorous testing is needed throughout the development cycle. You can get away with manual exploratory testing, but we all know this is error prone. Therefore, you need to rely on automated tests that validates your core functionality executed regularly, in additions to performing exploratory testing.
The iPhone SDK already comes with UIRecorder, which is part of the Instruments app. However, from my brief experience with it I found it not very flexible, and does not offer scripting capability.
This is where UISpec comes in play.
Also checkout this short video which demonstrate an automated test using UISpec.