I used to be pro-nVault for all scenarios due to the ease-of-use. It requires no knowledge of querying, you simply feed it a key and it gets your data linked to that key.
But now that I know how to write SQL queries, I will probably always use SQL if I need to do any type of retrieval with sorting\ordering or for a retrieval that is not a simple key reference. If you need to sort\order with nVault, you will need to load all data into an array, and then sort it. This can be painful when dealing with thousands of records. With SQL, your query can do all of the work for you.
Another thing is when you want to store multiple pieces of data in nVault you need to put it all in one string (or have multiple entries for the one user, each holding 1 piece) Bugsy 15300money 100health 55xp
And then when you want to retrieve it, you need to parse out the data element(s) that you want. It's not all that hard to do, but I'm just saying.
With SQL you can simply select which fields from the record that you want to retrieve.
SELECT Money FROM tbl WHERE steamid = 'STEAM_0:0:12345';