Sorry. I haven't had a chance to reply all day. The biggest reason I think Eclipse is better is because it has automatic incremental compilation built in. This feature is an absolute game changer in productivity. Visual Studio doesn't have it for C#. Intellij doesn't have it. As far as I know, Eclipse is the only Java IDE that does.

Think about it. As you are editing and saving, a real compiler is recompiling your code. Any and all errors show up as feedback in the IDE immediately. Intellij tries to guess errors for you, but I find that it often misses things until you run a build manually.

In conjunction with automatic incremental compilation is the problems window. I can't find anything remotely like it in Intellij. In a single window I can see all the errors and warnings in my workspace and address them. This is tremendously helpful, for instance, when I'm doing a complicated refactoring that can't be completely automated.

Another insanely awesome feature of this compiler is that it compiles class files with errors in them. This lets you do things like run your program even if there are compiler errors in your project, or, even more usefully, run a unit test. In Intellij I get so frustrated when I can't run a unit test because some entirely unrelated java file in an entirely separate module has a compiler error because I haven't refreshed my gradle project since pulling from git.

I really like seeing the warnings too. In every Intellij-driven project I've seen people do not care at all about warnings and the result is a lot sloppier code, including way more code that uses raw types, code that performs unchecked generic casts, code that makes mistakes with serialization, etc. In this sense Eclipse encourages better coding practices by putting the warnings your face in the problems tab.

I've had the opposite experience with plugins in Eclipse. I've found that there's way more plugins than in Intellij and that they work better. For instance, I completely gave up on Intellij's code coverage builtin plugin. It flat out wasn't working. On the other hand, the plugin I've tried in Eclipse works great. I've also found Eclipse's FindBugs and Checkstyle plugins to work way better for me.

I really dislike how Intellij handles debugging and spawning sub-processes. I remember at $lastjob when I still used Eclipse and I was helping an Intellij user try to debug something. I helped him figure out that he actually had about 5 sub-processes running in a debugger already and they were conflicting with each other. This kind of mistake I think is much harder to make in Eclipse. I also love the debug perspective and how it is separated from the regular perspective.

I could go on and on. I've found Eclipse to always be much snappier and more responsive than Intellij and to use less memory. I've found its code formatter to be more feature rich and useful. I like Eclipse's look and feel a lot better. Intellij uses Swing and it shows. But, at the end of the day, above all else, its the incremental compilation and everything that builds off of it. I have to use Intellij at my current job and I absolutely wish we could use Eclipse instead.

I find for instance that Intellij leaks memory and I frequently have to restart it once it gets to 8+ GB of usage. Also If I give it less than 6 GB of heap it runs insanely slowly.