It sounds like your issue is the decompression of the kernel. From what I understand, getting stuck at the rainbow screen is what happens when the kernel fails to load.
My assumption is that zcat is giving you a error either because the wrong file is being sent in to the command or the kernel image your using, vmlinuz, is corrupt.
Did you download the most recent Ubuntu image for the pi4 from their website?
You can also try decompressing the kernel using another method. There are several methods listed in the previous posts.
Give that a shot, and let us know what happens. I went through the directions again, step by step, and had no issue.