Again I totally agree MS should have a system for packaging apps. But they do
have established locations for storing data. The problem is that nobody's following them. As the others have stated part of it is due to legacy support (which Microsoft are generally very good at doing, even beyond reason) and part of it is due to apps just ignoring it. You can dictate and enforce standards like you do under Linux or OS X, or you can retain flexibility. Personally I'd rather they enforced standards and dictated where files had to go, but I can see why it wouldn't be a popular decision.