Sure you can store JSON as varbinary; but that don't make much sense. JSON is string and so nvarchar(max) is the better choice.
All JSON functions in T-SQL work with nvarchar, not with binary, see https://learn.microsoft.com/en-us/sql/relational-databases/json/json-data-sql-server?view=sql-server-ver15
but I have observed that nvarchar(max) will not retrieve all data only a limited chunk of it
Then you are doing something wrong, it works for me and all others.