Hola James2016-2:
Los dos sirven para el mismo objetivo, la diferencia radica en caracteres especiales, que tienen los idiomas.
Si tú solo almacenas datos en un idioma, utiliza varchar (aprox. 2 bytes por carácter). Si por lo que sea, puedes utilizar varios idiomas, lo más natural sea utilizar nvarchar(aprox. 4 bytes por carácter).
Te digo aprox, ya que dependiendo de la definición de longitud, puede aplicar algún byte más. (varchar(max) o nvarchar(max))
Échale un ojo a este hilo, que ya esta bastante documentado.
https://social.msdn.microsoft.com/Forums/es-ES/9807605a-83c0-4c73-818d-a34f096e3b8a/diferencia-entre-varchar-y-nvarchar
Tipos de datos
https://docs.microsoft.com/es-es/sql/t-sql/data-types/data-types-transact-sql?view=sql-server-2017