I'm not gonna install SMF just to check, but storing a user account probably takes no more than 1–2 kb of data. Not really enough to justify a deletion policy on that reason alone. I could see maybe doing it to allow desirable names (like common first names unadorned with numbers or other identifiers) to be reclaimed.
With the way relational databases work, the way it is stored in the database is that every account that is registered gets a unique ID number (I know that mine on this forum is 33). When you post, the post is stored along with the ID number of the poster (so this post would have "33" somewhere in the database row). Then, when that post is displayed, it looks up the user information for that user (user name, avatar, etc) and loads it into the page in real time. That's why whenever you change your avatar, it changes across the forum—the avatar is only loaded in whenever the forum sees a post with your user number, and it always pulls the currently-selected avatar.
This is also why we are extremely reluctant to delete user accounts, and usually advise people that don't want their account anymore to simply stop using it or to scramble their password. When we delete an account, the thread display script would try to look up an account that doesn't exist and throw an error. Therefore, the account-delete function goes through all of that user's posts and assigns them to an account ID of 0. This means that, should we need to restore the account because the person changed their mind, it would take a lot of work to extract the relevant posts from account #0 (which would have several dozen deleted accounts' posts to it) and change their user IDs to the new/restored account number.