newbie: question about file conversion and sizes

I want to build my own OSMmap for Garmin, and I use the openfietsmap scripts http://www.openfietsmap.nl/procedure as basis.
These scripts run fine on my Mac, but implementing contourlines as suggested:


./osmconvert Hoehendaten_Freizeitkarte_DEU+.osm.pbf -o=Hoehendaten_Freizeitkarte_DEU+.o5m
./osmconvert --drop-version Hoehendaten_Freizeitkarte_DEU+.o5m germany-latest.osm.pbf -o=germany-latest-contours.o5m

produces interim files with extreme filesizes:

Hoehendaten_Freizeitkarte_DEU+.osm.pbf 225MB

Hoehendaten_Freizeitkarte_DEU+.o5m 1GB
germany-latest.osm.pbf 2,92GB
germany-latest-contours.o5m 35,35GB

To avoid these increases i tried to use .pbf again for the output:


./osmconvert Hoehendaten_Freizeitkarte_DEU+.osm.pbf -o=Hoehendaten_Freizeitkarte_DEU+.o5m
./osmconvert --drop-version Hoehendaten_Freizeitkarte_DEU+.o5m germany-latest.osm.pbf -o=germany-latest-contours.osm.pbf

Now the output is smaller than before:
germany-latest.osm.pbf 2,92GB

germany-latest-contours.osm.pbf 2,29GB

What´s the reason for this decrease? Am I loosing data during the conversion/combination, or is this an effect of compression?