I find it very difficult to quantify the difference between teams of programmers vs. a compiler."
What I was getting at by saying that a a compiler could replace a team of programmers is that a modern compiler is the distillation 1000's of labor-years of knowledge & research, implementation, and testing. You would need a large and very good team of programmers to replicate the work of a state of the art compiler. By maturity, I also meant that older compilers often didn't compile code correctly. We're not talking about inefficient object code -- just plain wrong code! We tend to take for granted that modern compilers work right of the box, but think back to 2002-3 when everyone was dealing with goofed up C++ compilers. Dr. Dobbs ran an article on the problem. I HATED Visual Studio during this time period.
Most compilers, IMO, tend to be written for the common denominator (think camp 2). Computing has largely been a linear exercise where we tend to problem-solve for problems of a different permutation on the same problem (e.g., blogs, CRM's, data warehouses, video games). I think that compilers have largely been optimized for this general purpose use, and there are very few 'new things' that crop up. I mean, let's face it, how much compiler optimization could one do to improve the performance of Microsoft Word or that web app you wrote? Most compilers make do with the behaviors and patterns of everyday usage.
While there are specialized compilers (eg for embedded systems or RT systems), in general, a compiler doesn't know whether the app it is compiling is MS Word or some specialized app. All of the optimizations that improve a specialized app would improve Word -- you would just be less likely to notice them in an event-driven application like Word.
There are a large number of very complex optimizations that a compiler can perform: http://en.wikipedia.org/wiki/Compiler_optimization
It is more or less a general optimization problem (minimize the number of instructions, number of fetches, cache lines, etc), and like many optimization problems, there are some optimizations performed by compilers that are just too complex to be done by hand. Register allocation and instruction scheduling, for example, both include problems in NP. If a problem is in NP, then you don't have too many options: approximation, randomization, heuristic search, etc.