$ git init empty-1
$ git init empty-2
$ cd empty-1
$ git fetch ../empty-2
fatal: Couldn't find remote ref HEAD
fatal: The remote end hung up unexpectedly
But:
$ git init empty-1
$ git init empty-2
$ cd empty-1
$ git remote add other ../empty-2
$ git fetch other
# this works
I haven't spent a lot of time looking into the code, because we can use the second option. But it does seem weird.