Just glancing at at your project, I like the use of an EntityFactory in your ReturnsEntities trait. Do you think in this case having a trait such as your ReturnsEntities trait or extending an abstract Repository is the best way forward?
I probably should have mentioned in this article that it’s a neat idea to return a \Illuminate\Support\Collection of entities for repository methods that would return an array of entities as this will at least feel more familiar to other Laravel users, and this return type can be specified in the interface.
On your note on caching, you could also look at using a decorator pattern for making your repositories cacheable — there’s a decent write up on this subject here.
I definitely agree with you on the active record queries point. It’s like I said in my article, the likelihood is that for most small ‘playground’ projects it’s probably better to just return the Eloquent models for the sake of simplicity and ease of use. For large long term projects, it’s worth putting more time into your architecture.