Predicates are an Ed Codd, relational ideal.
Indexes have more to do with the physical implementation of the table. They help make searches faster (e.g. B-tree representation).
Predicates can be mapped to WHERE clauses and indexes in actual implementations, but I think predicate is more abstract and theoretical. It doesn't know or care about how you decide to implement the relation. Predicate is still true whether you do a TABLE SCAN or index it properly.