First of all as mentioned. You're wanting the initrd not the kernel image compressed. And you have everything configured correctly for it to be compressed.
You are also correct that it is not 100% compressed, and even appears to not be compressed at all because the first part of the initrd is a complete CPIO archive, which is uncompressed. As you discovered this uncompressed CPIO is the intel microcode update data. However the data following that first CPIO archive will be another compressed CPIO which is the main initrd archive.
The linux kernel can read multiple initrd archives concatenated together, even when some are compressed and some are not. According to a recent linux kernel, the initrd format is a follows:
* is used to indicate "0 or more occurrences of"
(|) indicates alternatives
+ indicates concatenation
GZIP() indicates the gzip(1) of the operand
ALGN(n) means padding with null bytes to an n-byte boundary
initramfs := ("\0" | cpio_archive | cpio_gzip_archive)*
cpio_gzip_archive := GZIP(cpio_archive)
cpio_archive := cpio_file* + (<nothing> | cpio_trailer)
cpio_file := ALGN(4) + cpio_header + filename + "\0" + ALGN(4) + data
cpio_trailer := ALGN(4) + cpio_header + "TRAILER!!!\0" + ALGN(4)
Although, I don't think this is up-to-date either as more than gzip compression is supported. Also, I believe there is a bug in the kernel where an uncompressed CPIO archive can not follow a compressed one. Another thing to keep is mind is that if there are duplicate paths in the various initrds, the data of last one will be used.