There were some reasons to stay away from VARCHAR on SQL Server 6.5 but for 7.0 and 2000, those issues have been dealt with.
I perfer the VARCHAR datatypes. SQL Server only stores the amount of data need to store the value - which leads to more data on the page. More data on the page means that it will take less I/O to retrieve the data.
The only issue might be with columns that are volatile and whose size changes dramatically. In this case, SQL Server might not be able to update the row in place and would have to bounce the row all over the page.
-Mike