One difference is that changing the length of a varchar column in an existing table can be a major pain if you have other database objects that must be the same type. For example, any views which also carry this column will need to be dropped and recreated (or otherwise modified), or else Postgres won't allow you to make the change.
Working with the text datatype and using check constraints on length makes this much easier.
Working with the text datatype and using check constraints on length makes this much easier.