Techniquement, la raison est simple.
Une image BMP par exemple est codée de façon simple. Un point rouge, suivi d'un point rouge, suivi d'un point bleu, etc.
Le jpg est compressé, c'est à dire qu'il code point rouge x2, point bleu, point rouge x7, etc.
Plus la compression sera importante, plus il tendra à mélanger les couleurs qui ne se voient pas trop. Dans l'exemple, on se retrouvera rapidement avec point rouge x 10
Les zip et confrères ne savent pas interpréter correctement ces détails, ils les transcrivent à peu près de la même façon. Ils ne gagneront un peu de place que sur certains éléments d'en-tête des fichiers images : le code indiquant qu'il s'agit d'un fichier jpg ou bmp, suivi des dimensions de l'image et autres détails techniques.
