For what it is worth, we do see this problem semi-frequently on larger repositories hosted by gerrit 2.12.2 (sometimes once a week)
As you say, restarting gerrit makes it go away, but sooner or later one pops up again.
We do run periodic c-git "git gc" on the repositories due to having had that before gerrit offered its own, and have not yet changed over due to FUD on people complaining in older gerrit versions of issues with gerrit's implementation.
To try and avoid any concurrency issues (again FUD about jgit and cgit running in the same repo at the same time) our integration marks the repository read-only to gerrit and waits to make sure there are no gerrit receive-pack processes on the repository running before starting gc. It then flushes gerrit's caches on finish.