A few points to start ..
1) Additional processing to determine the length. - 2 extra bytes for each record, whether null or otherwise
2) Frequent updates of VARCHAR columns will lead to row overflows - performance issues
3) VARCHAR does not save space on Indexes. Indexes will be for the full length of the column. INDEX ONLY access is not possible (This is chaged in V8 - PADDED/NOT PADDED Options in CREATE INDEX)