So the short of it is you want a report rate high enough to give the sim the best data per frame, but any higher and you waste performance.
You are also running unsynchronized relative to the sim, so for example, if you were to output reports at the framerate, then on average you'll be about half a frame "late" - that is, we called up, then you had new data, then another frame came around, and in the worst case you miss by a microsecond and have almost a whole frame of latency.
You can cut down this latency by over-reporting; if your report rate is 2x the framerate, at worst the data is half a frame old.
With that in mind, I'd suggest something around 120 hz should be fine.
- If you're running at 60 fps, your worst latency is 8 ms - less than half a frame.
- If you're running at 20 fps, you still have very low worst latency, and the latency of the joystick is much lower than frame latency.
I don't think there's any need to go up to 2 ms (500 hz). At that rate, for every report you send that we use, seven will be wasted.