Ok firstly *.o modules, if I remember, are a legacy of kernel modules prior to the 2.6.x series, to which they were change to *.ko. As knoppix used to be 2.4.x based, then later dual 2.4.x/2.6.x, and now 2.6.x only. It is understandable that there may be a few legacies lying around particularly with the miniroot.gz file as it does not require the amount of upkeep that the cloop image requires.

With that said. The cloop.ko and unionfs.ko files are the ones you are after, the .ko are just indicative that the were compiled with at least a 2.6.x kernel. You can incorporate them in one of two ways as mentioned you can rename cloop.ko (uniofs.ko) to cloop.o (unionfs.o) or you can modify linuxrc to load the .ko extension instead of the .o extension.

The reason unionfs is so large is that it still under very heavy development and as such by default it configured to compile with a lot of debugging information (and I mean a lot), you can either remove the debug flags from the unionfs Makefile or simpler use the strip command to remove uneeded portions of that module (eg strip --strip-uneeded unionfs.ko), if I remember that will drop it to around 2MB instead of the default 6MB.