I once thought they were a good idea too...
until I needed to revise the underlying type definitions for a set of user defined data types in multi terrabyte production databases with hundreds of tables + views + functions + stored procedures all of which were defined using the user defined data types.
The only way this can be achieved in practice is by creating a completely new database and copying everything from the old database into the new one - assuming that a convenient maintenance window is available, and that you have the necessary storage available.
If the system has to be available close to 24x7 then that is a lot of hastle when all you want to do is redefine varchar(30) to varchar(60) for 1000 columns; which can be achieved if normal data types were being used with alter table alter column in a minimal amount of down time.
We now still support the concept of a user defined type in metadata but resolve it to base data types in the database build or delta scripts.