As far as I'm aware, from a storage point of view, no it doesn't really matter. SQL Server will not pad out a varchar column and hence it will only take as much space as it needs (it will also truncate any trailing blanks if you have ANSI_PADDING set to OFF when the column is created).
The only reason for you to use varchar(10) instead of varchar(20) is to enforce business or data rules - i.e. do you want anything larger than 10 characters to be truncated? Do you want to limit storage space taken to a maximum of 10 characters for that column?