A simple synchronous processor is similar to a fast-food restaurant where everybody is in a single line, receiving the plate from a first waiter, the appetizer from a second one, up to the dessert from the last one, and then eats the appetizer at one table, moves to the next one for the first course, and ends up paying at the cashier. A central coordinator tells everybody when it's time to move on. Worst even, the coordinator does not look at the waiters or the customers, so has to assume that one of the waiters might be injured and very slow serving.
An advanced synchronous processor has two waiters serving second dishes, which is a complex task due to several choices being available, and offers its customers several tables to eat their meals. However, the centralized coordinator is still there, and still has to assume that somebody may be very slow, to be on the safe side.
In an asynchronous microprocessor, on the other hand, there is no centralized coordinator and everybody is free to move on whenever the next waiter or table is ready. There is some advantage even in the single line case, since the restaurant adapts itself to the speed of waiters and customers. But the advanced processor is where the asynchronicity pays off the most, since now one does not need to make sure that the time required to process every stage of the meal is exactly the same in order to avoid idle time and wasted resources.
All this is about performance and robustness with respect to environmental and process variations, due to the fact that integrated circuits fabricated from the same masks at the same plant, which nominally implement the same functionality at the same performance level, are very different from each other. The reason is that geometries on silicon are very close to the discriminating power of the process making them (the wavelength of light used for fabrication). Hence they may differ within a chip or across chips by 30-50% with respect to nominal values. Temperature and other environmental factors can also make a huge difference.
Synchronous designers, due to the centralized controller which is designed a-priori, must assume the worst, based on Murphy's law, and hence can only guarantee that all the circuits that will be manufactured from their design data will work at the speed of the slowest ones. This leads to a great loss in performance, just like in a single-lane highway.
Asynchronous circuits, on the other hand, adapt to varying environmental conditions and are easier to bin according to their speed, thus leading to a business model which generalizes the one used by Intel to speed grade their processors and sell them at different prices based on performance.
Asynchronous circuits are also less noisy than synchronous ones, because movement of data is not synchronized centrally. It is easy to understand why, if one thinks about an army marching at a single pace, which can easily destroy a bridge by marching over it, as compared to the same group of soldiers moving each at his own pace. Noise is important in electronics because it affects the cost of packaging, since electronic circuits must not disturb each other (like your cell phone sometimes does to your radio...).
Power consumption, in addition to performance and noise, is another advantage of asynchronicity, since work is performed only when it is useful, while in synchronous circuits even idling can require energy to say "I am doing nothing right now".
Why are synchronous circuits so dominant in practice, then? Why is there only a handful of asynchronous commercial products on the market? The answer so far, as discussed by Steve Furber, from the University of Manchester, in an article entitled "The Return of Asynchronous Logic" and by Ivan Sutherland, from SUN Microsystems, in one entitled"Computers without Clocks (Asynchronous chips improve computer performance by letting each circuit run as fast as it can)", has mostly to do with habit, education and tool support.
Now, however, things are changing. Several research groups, including the author of this page, are working on asynchronous design tools, flows and methodologies. You can find more information at the Asynchronous Logic Home Page and, more modestly, at my own asynchronous research page.
Luciano Lavagno