Multi-column uniqueness constraint, checking a field has one of two values
You need to remove the status column from your index:

CREATE UNIQUE INDEX builders_unique_house 
   ON houses (builder_id)
WHERE status IN ('PLANNING', 'CONSTRUCTING');


If you keep the status column, the index will contain e.g. ('PLANNING', 1) and ('CONSTRUCTING', 1) - that combination is unique. 

If you remove the status, only the builder_id will be indexed, but only if one of the status values are set. And then trying to index "the other" status will lead to the desired unique index violation.