Hash Join vs Hash Semi Join
In the first query, only the customer_id needs to be saved from the customers into the hash table, because that is the only data needed to implement the semi-join.

In the second query, all of the columns need to be stored into the hash table, because you are selecting all of the columns from the table (using *) rather than just testing for existence of the customer_id.