I agree the current situation is far from perfect (Ideally, the people at freedesktop.org would build a unified centralised password access protocol like they did with dbus etc, so applications developers wouldn't have to implement all existing protocols every time) but having each application implement its own strategy is worse.
Three reasons:
First, the user either has to type as many master password as there are implementations (Now I have to type three passwords when logging in: the session password, the kwallet password, and the firefox password because firefox doesn't integrate with kwallet) or store them in cleartext (or in an easily decrypted format). If I had to type one master password for each program that needs passwords (IM, browser, email, irc, gpg, ssh, etc), that would mostly defeat the purpose of them.
Secondly, having a single storage space enables sharing passwords securely between applications. Now I need to save my passwords separately for firefox, konqueror, and chrome. You'll say "stick to a single browser then" but it shouldn't have to be like that.
Third, writing your own implementation increases the risk of having bugs that lead to security holes, compared to a single implementation that got polished over time.
I'm not sure your statement that most users don't use those is right but know too little a sample to support my opinion (I don't know that many linux users but all of them, and not only experts, do use gnome keyring, and I use kwallet).