If you're at all likely to be defining views that contain any of these columns, I would strongly advocate using text with the check constraint, rather than varchar. The reason being: if you ever need to increase the column's maximum length, in the case of varchar you will be prohibited from making this change because it violates the data type dependency between the table and the view.
To cope with this, in the same transaction that you're increasing the length of the varchar, you will also need to drop and recreate all such dependent views (and any other views that depend upon those views, etc).
This is not fun.
In comparison: increase the maximum length of the check constraint, job done.