microcontroller vs. System on chip
A microcontroller is a processor that has its program and data memory built in. These chips are intended for small embedded control applications, so leaving the pins for I/O and not requiring a external memory bus is very useful. Some microcontrollers have as little as 6 pins, and can do useful things. Contrast that to a general purpose computing processor intended for a PC. Those things have 100s of pins in a array and require extensive external circuitry.
As for system on a chip, that is a less well defined term. Cyprus calls some of their parts PSOC (Programmable System on Chip). These are basically a microcontroller with small FPGA on the same chip. Instead of having built in peripherals, you can make whatever you want within the available resources of the FPGA.
In general, I think a system on a chip is a microcontroller with some supposedly system-level logic integrated with it. Of course the further you try to go into the system, the less likely any one set of extra hardware is going to be useful, so some kind of configurability is very useful. However, for now "system on chip" is more of a marketing term than anything real.
System On a Chip (or SoC) is a catch-all phrase that marketing people use and doesn't really mean much. There are also many variations like:
PSoC: Programmable System On a Chip, by Cypress Semiconductor.
SOPC: System on a Programmable Chip, by Altera
In essence, a SOC is a single chip that does everything that used to take up multiple chips. There is nothing there that says it has to include a CPU or RAM. So, due to the fact that we can get more transistors on a chip and we've been getting more and more functionality on our chips-- just about everything can be called an SoC when compared to what we were doing 10 or 20 years ago!
To make matters worse: there are lots of examples of things being called an SoC which still require multiple chips to make useful. Often times you'll have some form of a CPU+Peripherals that still require external Flash, RAM, and power stuff. So even the SoC name is misleading.
An MCU is probably the most concise example of what an SoC should be-- but it is a very limited example.
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.