I put the LEDs into my NKRO report, but I probably don't need to (now that I run both at the same time).
I don't switch as such, but the report descriptor for the Boot endpoint tells the host that there are no keys iin it. When in Boot protocol mode I inhibit output from anything other than the Boot endpoint.
This is my NKRO descriptor (with the Media key and the Linux bug fixes removed, since they complicate it)...
#define USB_FIRST_KEY_BIT 1
#define USB_LAST_KEY_BIT 0xA4
#define USB_NUM_KEY_BITS (USB_LAST_KEY_BIT - USB_FIRST_KEY_BIT + 1)
#define USB_NUM_KEY_BIT_BYTES ((USB_NUM_KEY_BITS + 7) / 8)
#define USB_NUM_PADDING_KEY_BITS (8 * USB_NUM_KEY_BIT_BYTES - USB_NUM_KEY_BITS)
static uint8_t PROGMEM keyboard_hid_report_desc[] = {
    0x05, 0x01,          // Usage Page (Generic Desktop),
    0x09, 0x06,          // Usage (Keyboard),
    0xA1, 0x01,          // Collection (Application),
    0x75, 0x01,          //   Report Size (1),
    0x95, 0x08,          //   Report Count (8),
    0x05, 0x07,          //   Usage Page (Key Codes),
    0x19, 0xE0,          //   Usage Minimum (224),
    0x29, 0xE7,          //   Usage Maximum (231),
    0x15, 0x00,          //   Logical Minimum (0),
    0x25, 0x01,          //   Logical Maximum (1),
    0x81, 0x02,          //   Input (Data, Variable, Absolute), ;Modifier byte
    0x95, 0x05,          //   Report Count (5),
    0x75, 0x01,          //   Report Size (1),
    0x05, 0x08,          //   Usage Page (LEDs),
    0x19, 0x01,          //   Usage Minimum (1),
    0x29, 0x05,          //   Usage Maximum (5),
    0x91, 0x02,          //   Output (Data, Variable, Absolute), ;LED report
    0x95, 0x01,          //   Report Count (1),
    0x75, 0x03,          //   Report Size (3),
    0x91, 0x03,          //   Output (Constant),                 ;LED report padding
    0x75, 0x01,					//   Report Size (1),
    0x95, USB_NUM_KEY_BITS,		//   Report Count (),
    0x05, 0x07,					//   Usage Page (Key Codes),
    0x19, USB_FIRST_KEY_BIT,    //   Usage Minimum (),
    0x29, USB_LAST_KEY_BIT,     //   Usage Maximum (),
    0x15, 0x00,					//   Logical Minimum (0),
    0x25, 0x01,					//   Logical Maximum (1),
    0x81, 0x02,					//   Input (Data, Variable, Absolute), ;keys bit array
#if USB_NUM_PADDING_KEY_BITS
    0x95, USB_NUM_PADDING_KEY_BITS, //   Report Count (),
    0x75, 0x01,						//   Report Size (1),
    0x81, 0x03,						//   Input (Constant),                 ;Padding
#endif
    0xC0,                 // End Collection
};