In general a microcontroller is taken as being an embedded device which is internally programmed to perform a specific task. There is minimal user interaction and little or no flexibility. A microcontroller is typically fairly low powered with only small amounts of memory and ROM (flash).
Conversely a System-on-Chip is the other end of the spectrum. It is more geared towards complete flexibility and user interaction. It often includes such things as IO drivers for bigger hardware (like hard drives, etc), and even sometimes a graphics adapter. A System-on-Chip is more like a complete computer system, yes, on a chip.
There is quite a lot of crossover between the two - when does it stop being a microcontroller and start being a System-on-Chip? Which is where a lot of the confusion comes from.
Basically, if it can do what a computer can do then it's a System-on-Chip. If it's geared at, for instance, sitting inside a desk phone managing your contacts list, or in a keypad entry system, or running the motors on a CNC machine, then it's a microcontroller.
p.s., don't quote me on this - as I say there is a lot of crossover between the two.