Even when you delete a branch, the old commits will all still be in the reflog for HEAD (unless they're past the expiration time anyway -- or you delete HEAD itself, which is beyond the ken of normal Git commands.) So they'll still show up in 'git reflog show' (which refers to HEAD by default), and you can still recover them just fine.
I do agree that it would be better if Git kept the reflogs around. A case where this does matter is if you want to keep an archival record of changes to the repository, e.g. in a organization's central repository that everybody pushes to. It's simple to configure Git never to expire old reflog entries (see gc.reflogexpire and gc.reflogexpireunreachable in git-config(1)), but AFAIK there's no way to configure it to keep reflogs of deleted refs.