Only someone who was not a programmer and who had no experience of any other development environment since the mid 1980s could consider the Arduino environment a "perfectly good IDE".
At work, I use Visual Studio to do application development. I often have 3 or 4 instances running at once, working on different parts of applications that communicate with each other. The files I work on are typically small, because I embrace the concept of OO, and have lots of classes. Each class has a number of methods, and there are subroutines that break the methods down into smaller pieces.
Even with all that, though, some of the files run 60,000 lines, so code folding is essential. I know how to work in that environment.
However, when it really comes down to it, coding involves files that need to be edited, and Visual Studio provides a text editor.
For blinking an LED or making a robot turn left or right, to avoid obstacles, or go straight when there are none, the simple text editor provided by the Arduino IDE is good enough. It supports cut, copy and paste, find, and replace/replace all. That's about all it really needs to do.
There are a handful of functions that are used over and over. How many times do you need intellisense to tell you that pinMode takes two arguments and that the first is the pin number and the second is the mode? How often do you forget that the modes are INPUT or OUTPUT?
I didn't say that the IDE was a great editor, but I think that all beginners should use it until the limitations become obvious AND ONEROUS. By then, though, they know enough about the tool chain and the Arduino library structure, etc. to know what instructions for setting up Eclipse or NetBeans, or Code::Blocks are telling them to do.
If you want to help a newbie that thinks he/she MUST use an advanced tool to blink an LED, be my guest.