It's obvious why this happens. The shopping cart, as an e-commerce pattern, is a bookmarking tool. You put stuff there, it stays there while you browse the store for other stuff. If you step out for an hour and come back, things you added to the cart are still there. If you close the tab and open it later, the things are still there. If the price changes in between, it's updated. If an item goes out of stock, it's reflected on the cart screen. If it quacks and walks like a bookmarking tool, ...
The way for the e-commerce sites to stop it is obvious: put a time limit on the basket. Purge it if the user leaves it be for more than a couple hours. But for some reason, nobody seems to do that :).
As for the browser bookmarks, I also don't use them much (nor does anybody I know). They map badly to actual use cases. For short-term storage, tabs are perfect (especially when the browser saves them between restarts). For mid-to-long-term storage, you want to save your links where you can find them on any device, and often you also want to store them within the service itself (see also: stars on GitHub - they're not an expression of appreciation for the project, they're just bookmarks).