Hmm, I just tested with every combination of using FirstOrDefaultAsync() with and without a predicate and with and without a Where() preceeding it and they all seemed to work. This is the exact FakeDbSet code I was testing with:
https://gist.github.com/taschmidt/9663503
https://gist.github.com/taschmidt/9663503