PostgreSQL translates IN (...) to = ANY(ARRAY[...]) internally. They're largely the same thing.
In theory for small IN lists it could specialize the query into a union with specialized plans for different values, but it doesn't do that.
Charles is right. For smaller sets use either form, whatever is convenient. For larger sets create a temp table, COPY to populate it, create indexes on it if you need to, and join on it.