I noticed that some WLAN QoS frames of the same subtype (e.g. 8) have a FCS and others don't. In both cases the protected flag in the frame control field is set to 1. What drives this difference and how is the integrity of such frames validated?
What drives this difference
Perhaps either
how is the integrity of such frames validated?
By checking the FCS - it's there, you just aren't getting it in your capture. For transmitted frames, it's added when the frame is transmitted by the network adapter; for received frames, it's checked by the network adapter even if it doesn't supply it to the host.