Another major difference is the mode of operation of compiler and racer backends. Currently, compiler can only produce the save analysis data for the whole crate at once. Even if you are interested only in the data for the single function you are currently editing, you’ll have to process save analysis for the whole world. In contrast, if I understand correctly, Racer is more on-demand and is closer to IntelliJ in this respect (but it dose approximate partially regex-based analysis (I think, not sure about this one!)).
And, as @kngwyu said, error tolerance is also important: it’s not too hard to completely break the compilation, which makes save-analysis useless.