Why are some things in PowerShell done with a PSProvider whereas others have Cmdlets?

I can see the good intentions of managing multiple different hierarchies of objects by navigating a provider with common Cmdlets but you only need to look at the registry to see where this gets messy: Values as Item Properties, no direct remote support etc. Then look at the AD provider – navigating around using Distinguished Names. I wonder if anyone uses the AD Provider rather than its native Cmdlets? I see PSProviders, like PSSnapins seem to have taken a back seat – there’s no DHCP: or DNS: PSDrives even though these are tree-like. (Presumably because these Cmdlets are simply built on top of CIM.)

So please Microsoft, how’s about New-RegistryKey and New-RegistryValue etc?
And should I really have to delve into .NET to manage a remote registry?! We’re not all lucky enough to have PSRemoting enabled across the Enterprise. Perhaps they could at least extend the registry provider to be able to mount a remote registry hive as a PSDrive.

Now I’ve just got to persuade people at work to enable the Remote Registry service on all client machines. As an aside, why on earth does Get-Process rely on the remote PC’s Remote Registry service to work?