I'm still back on 5.2.0, so might not be an issue in the current version - although a quick scan of the code I don't see anything that would fix it.
Noticed when an expression uses FirstOrDefault (and presumably a number of other methods) it gets converted to a where statement.
Unfortunately it seems to append this where statement every time the query is executed as it's modifying CollectionSelectionNode.ListExpression directly, which means after every run it has an extra Where statement appended and thus makes a unique expressiontree every time through, thus missing out on EF compile cache, SQL plan cache and any other caching one might have enabled.