Even if you are randomly flipping bits, the bit-strings are all aligned at a byte boundary, so that is actually equivalent to just randomly changing bytes in a byte-string. If that is your use case, then yes, just packing the strings and using a regular compressor would perform quite well.
On the other hand, if in your real use case bit-strings are not aligned in any way, then, compressing them as bytes is going to perform somewhat worse. Something that may work better is to use Run Length Encoding (RLE) to transform the bit-string into a byte-string that can then be compressed using regular compression algorithms.
In any case, the final result would vary greatly depending on the specifics of the bit-strings you are trying to compress and the actual number of flips. The 25% parameter you are using ensures that any bit-sequence longer than a few bits is mutated.