This is a known problem. The technical reason that this is not trivial to solve is the possibility of a directory/file conflict between old reflog files and references that might be created subsequently (which in
turn is a limitation of how loose references and reflogs are mapped to filenames):
git branch foo
git branch -d foo
git branch foo/bar
Under your proposal, the second line would retain the reflog file for foo, which is named ".git/logs/refs/heads/foo". But the third line wants to create a file ".git/logs/refs/heads/foo/bar". The existence of the "foo" file prevents the creation of a "foo" directory.
A similar problem exists if "foo" and "foo/bar" are exchanged in the above example.
Peff proposed a solution to this problem , but AFAIK it is not making progress.