Texture Composition / Merging (metalic/roughness/ao/normal)

Compression does not like channel packing. BC1 compression treats rgb as single color. This is good when channels are coherent but when you store independent data to each channel compression will cause channel cross bleed. Also remember that BC1 stores endpoints channels with different bit depths. r and b gets only 5bits and green get 6bit.
It might also cause problems if some properties use sRGB and others do not. Usually you get better results with smaller memory footprint if you use smaller size(half * half size = quarter memory) for masks but separate textures using single channel alpha compression(3 times the memory). Then you get lot cleaner textures with smaller memory footprint.(75%)
You also gain freedom to choose texture dimensions per mask and you can skip each mask separately if it’s constant value or does not make sense.