Both types store variable-length character strings. NVARCHAR is a VARCHAR that supports Unicode (two-byte) characters.
Unicode data types take twice as much space to store the string as a character string. This is because unicode characters require two bytes to character to be able to support the full possible set of characters. This is why NVARCHAR string can only be 4000 characters (not accounding for the new NVARCHAR(MAX) data type.