Why on earth is anyone normally compiling more than one or two files at a time? Why do a full build each time you change a function?
Also, sometimes you need to iterate on some very core .h file and touching any of those brings the whole house of cards down and triggers a full or nearly full rebuild.