Por que Func <T, bool> em vez de Predicado <T>?

Esta é apenas uma pergunta de curiosidade, eu queria saber se alguém tinha uma boa resposta para:

Na biblioteca de classes .NET Framework, temos, por exemplo, esses dois métodos:

public static IQueryable<TSource> Where<TSource>(
    this IQueryable<TSource> source,
    Expression<Func<TSource, bool>> predicate
)

public static IEnumerable<TSource> Where<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, bool> predicate
)

Por que eles usamFunc<TSource, bool> ao invés dePredicate<TSource>? Parece que oPredicate<TSource> é usado apenas porList<T> eArray<T>, enquantoFunc<TSource, bool> é usado por praticamente todos osQueryable eEnumerable métodos e métodos de extensão ... o que há com isso?