document.cookie is the way it is because that's how it was first implemented. It's a crap reason, I know, but you have to remember the history of the early web. The first browser to implement a new feature set the standard for all other browsers to copy.
It's the exact same reason that
Why are there no implementation to modify cookies through JS?
Because it wouldn't be backwards compatible. Obviously we can't change the existing implementation, so we'd have to create a new one. In creating a new one we'd want to create one that can be reasonably replicated by existing JS code to back-fill old browsers, but if we've got to add a polyfill to get it working anyway, why bother even adding the new feature to the browser?
So, we're never gonna see a better cookie right?
wrong. Browsers are adding a new object implementation to store data locally, it's called
localStorage, and it can be reasonably replicated by cookies where it needs to be. This also allows us to separate the local information from the server information (servers can set HTTP only on cookies for server-only cookies).