Is it necessary for blocks to record the nBits difficulty parameter?
Recall from the Nakamoto Whitepaper that for Simplified Payment Verification (SPV) clients, security is measured mainly by the amount of work done to secure a particular transaction.  SPV nodes can't use past headers alone to verify that an incoming payment is valid, so there's technically not much need to store past headers[1].  

Of course, if you're not going to store all the headers, you need some way to measure difficulty for the headers you do have---and nBits provides that.

Note that storing recent headers can increase an SPV client's security by allowing it to calculate proper difficulty for later headers.  This ensures an attacker trying to lie to the client has to create proper-difficulty blocks.  Still, a complete headers chain isn't needed here, so nBits is still useful as a starting value.

[1] But BitcoinJ and all other SPV clients I know about still do store complete headers.  At a guess, the reason they do is to help them detect chain re-organizations (reorgs) that would render a previously-received payment invalid.