Cookieはテキストデータしか保存できないので、圧縮したい場合はdefalateしたあとに、base64で文字列に変換してやるのがセオリー。

gzipではなく、deflateなのは、gzipはdeflateにchecksumとheader/footerを加えたもので、deflateよりも、圧縮速度が遅く、サイズが大きくなるため(compression – Why use deflate instead of gzip for text files served by Apache? – Stack Overflow

gzipのベンチマークは(こちら)。約20%のサイズになる。

base64で変換するとサイズが4/3倍になる(Base64 – Wikipedia

PHPで配列を文字列にしたい場合はserializeするよりも、json_encodeしたほうがサイズが小さくなる(serializeとjson関数の比較 – Yuta.Kikuchiの日記