Most products these days are built on the philosophy of starting small and iterating. This incremental approach is extremely helpful in reducing risk and preventing spectacular failures. However, it is not possible to get out of a local maxima with an incremental approach.
I believe this is what has happened with most products we use. Each is optimized for a narrow set of functionalities, where the creators perceived a gap and addressed it. Once they have been optimized this way, expanding the functionalities is probably even more difficult that recreating a whole new product.