Git just chose to expose them inconsistently, making easy DAG operations hard to remember the syntax for.
I'm also not thrilled with the "everything is a pointer" model since that doesn't match how I've seen branches used in practice; Mercurial's concept of a branch as a named, linear sequence of commits seems to better match how I've seen it work at companies small (< 50 people) and large (>50K people). It's not a big issue, but it is yet another impediment that isn't necessary.
The reflog is useful, but not as ergonomic as Evolve's hidden commits that have been replaced.
Everything about Git's UI is like that. Poorly thought out, poorly integrated, causing unnecessary friction on top of what is a perfectly fine underlying implementation.