I'd recommend caching it at an instance property from Mixpanel's init. If you need to, you can modify parts of it at track-time.
One thing I'd recommend not calling at track-time is +wifiAvailable. Pretty expensive call. You might want to put it in its own queue and change it to an observation pattern instead.
+1. This deviceInfo dictionary should be computed once and cached thereafter.
Looks like we do this now.