An IDE, or an Integrated Development Environment is the tool that you use to create software. A lot of the credit for the success of any development software goes to the IDE. Who would develop using Dot Net if it weren't for Visual Studio?
I primarily use two IDEs for my day to day development - Eclipse for all my WebObjects and Java work and Xcode for all my iPhone and Cocoa work. Eclipse is definitely the better of the two.
Eclipse is Open Source while Xcode is Apple's product (see, I am not biased!).
These days, an IDE does a lot more than just give you text editing capabilities. Code completion, refactoring, inline documentation, templates and more, all these make life much easier.
Code completion is one of the most important features for me and Xcode simply does a bad job. Let's say I type the first few characters of a variable or a method. Now, when I hit the key for code completion (Esc for Xcode and Control+Space for Eclipse), while Eclipse will show me a list of options, Xcode often fills the first available option which, most often is not what I want!
File organization is another area where Eclipse beats Xcode hands down. Eclipse simply mirrors the disk file system of your project folder. Xcode, on the other hand has no connection between the two. You could have all your files in one folder on the file system whereas the project could have everything organized in folders. This becomes a problem as you manually need to go and move things around when the number of files becomes large.
Of course, Apple fanbois will still swear by Xcode (as with anything that has an Apple logo on it), but I really hope Eclipse starts supporting Cocoa and Cocoa Touch! Or that Xcode 4, touted as the next best thing since the iPhone 4 lives up to its promise.