Why does usb have start of frame packets?
I believe the original 1 ms (1 kHz) start of frame interrupt was to give devices to cheap but accurate timing.  The accuracy spec on that is rather tight.

If you don't need to do accurate timing, or you have your own crystal, then you don't need to know when USB frames start.  The host initiates all transactions, even when you send, so your hardware and firmware will know that way when to do what.

I've created a bunch of USB devices, and have not used start of frame detection at all so far.  If you are using a canned library, then possibly the library uses SOF for some internal timing or to know when to do housekeeping.  If the library docs say you need SOF, then you need SOF.