It all depends. For columns that are to hold codes (Currency codes, transaction codes or whatever), varchar is probably the way to go, since such codes typically are in the ASCII range. No need for nvarchar.
When it comes to names, there is reason to sit back and think for a while. Maybe your business right now is only in, say the Americas and Western Europe, and you can get by with varchar to save some space. But all of a sudden, your business expands into, say, Poland. It is a bit of a bummer if you cannot store Polish names which needs a different code page. If you settled on varchar from the start, you have a lot work to clean this up. To the extent that it may not be possible. Thus, selecting nvarchar for name columns and similar may be more future-proof.
As Viorel points out, in SQL 2019 you can use UTF-8 which you store in varchar. The one thing to keep in mind here that when you say varchar(20) this is 20 bytes. A value like "räksmörgås" is 10 characters, but is 13 bytes in UTF-8.