A username is just a session identifier that also contains useful information. Since it can be guessed so easily, though, you go on step further and supplement it with something extra, and a password works just as well.
This is also less secure than a random state ID, since the information is being passed in the clear over the 'Net, and cookies aren't generally treated as secure by most browsers. Generally it's better to authenticate the user relatively securely, pass back a reasonably un-guessable session ID, and use that for the duration of the session (expiring it after too much time has elapsed between visits). Associate that ID internally with the username.
I think this is just how "Everything" works (the codebase this site is built from). That doesn't mean it's approved by the higher-ups on the site or that they'd have done it that way if they had to choose.