3D Slicer is enabling compression, which is especially effective for label image. If you run help(site.WriteImage) you can see how to enable compression with the useCompression flag:
WriteImage(image: 'Image', fileName: Union[str, List[str]], useCompression: bool = False, compressionLevel=-1, *, imageIO: str = '', compressor: str = '') -> 'None'
WriteImage is a procedural interface to the ImageFileWriter and ImageSeriesWriter classes which is convenient for
many image writing tasks.
For an input image of N dimensions, a series of N-1 dimensional (slices) images can be written by providing a list
if file names equal to the number of slices in the input image.
Parameters
----------
image
the input image to be written
fileName
a single or a list of file names to be written
useCompression
request to compress the written file
compressionLevel
a hint for the amount of compression to be applied during writing
imageIO
the name of the ImageIO to perform the writing
compressor
a hint for the compression algorithm to use
You can also further control the compression with compressionLevel and compressor. More details can be found in the sitk.ImageFilterWriter class.
Also please run help(sitk.ImageFileReader) to learn about the outputPixelType option, so that you don’t need to do the extra step with sitk.Cast.