Well, this took ages and I'm proud that I finally found it: I believe there is a bug in the atmega32u4 (the heart of the #Arduino Leonardo, which supports USB), where it will not move to the status phase after receiving an OUT packet on a control endpoint.
Now I understand why everyone on the internet, including the Arduino library, seems to have given up on making the HID request SET_REPORT work. But I have a workaround and it works!