Why does plymouth start so late?

Modern graphics cards are well supported in the kernel through Kernel Mode Setting - this is the ability for the kernel to setup the display resolution early in the boot sequence to allow plymouth to display correctly.

However, some graphics cards are not compatible with KMS - or KMS itself doesnt directly recognize the graphics card.

In these circumstances, you can force plymouth to use a framebuffer - an old technique to directly access the graphics video memory (frame)

The word framebuffer means a part of video memory containing a current video frame, and the Linux framebuffer means “access method to the framebuffer under the Linux kernel”, without relying on system-specific libraries such as SVGALib or another user space software. (wikipedia)

run plymouth in a framebuffer

In a terminal copy and paste the following:

echo FRAMEBUFFER=y | sudo tee /etc/initramfs-tools/conf.d/splash
sudo update-initramfs -u