I really prefer the second one.
Even I've seen articles from top bloggers on .NET world, queryables, for me, are evil in a repository.
Reasons:
A repository is like a collection of objects but stored wherever its implementation has defined.
A repository abstracts the way data is mapped to object. Data store could be whatever, but business relies on repository in order to retrieve, add, update or remove domain objects.
Any read or write access to the underlying store must be managed by the repository itself - or any other underlying layer -.
Queryable destroys most of these points and/or reasons.
For example, why you would design a GetProductByName, GetProductByCode, if you can do it with LINQ on IQueryable?
And Queryable works bad in n-tier scenarios, since you won't be having access to the database connection in another tier than the one which returned a deferred set.
I don't think "queryable" concept and repository should be good for any software design, because it's telling that repository is useless.
Queryable is like designing a GetAll method. What's the point of a GetAll in a repository? Repository will be retrieving all domain objects and you'll be filtering them in business. But... Wait... Repository isn't supposed to retrieve domain objects with some criteria, is it?
Although I find queryable incompatible with repository, designing and implementing some repository method that accepts a lambda expression or any delegate in order to give some kind of filter or behavior, for me, is fine. This isn't deferred execution, it's delegation.