I context of Oracle Databases I learned that always using the smallest field size for Database columns has one pitfall.
When moving data via import export from a database with single byte collation to one with multiple byte collation (like Oracle XE) the length in bytes can increase and importing the data into the tables created by import fails. Of course Oracle has the option to define varchar2 length either as char or as byte.
My point here, is that it is not always wise to define field with always as small as possible. I have seen a lot of alter tables to increase field withs later (caused by changed requirements).
Having 20% - 100% unused field with is a discussible option here.