Mari uses it’s own, slightly unique, method for storing textures, but the closest thing out there would be zip compressed, tiled, mip-mapped exrs.
For anything other than trivial scenes you REALLY, REALLY want to use a tiled mip-mapped texture format. As mentioned else where a JPG needs to be loaded and decompressed in full and then mip-mapped by the renderer. A 20kb on-disk JPG could take up 30Mb of memory and always will, no matter where the camera is or how much of the texture is visible.
A tiled texture, no matter how large on disk, can be very accurately monitored. If you only need 128x128 pixels out of a certain mip-level of a 32kx32k texture, that is all you need to load.
This is basically how Mari and all production renderers deal with it. Work out exactly which tile needs loading and load that, once done with it, get rid of it. The mip-map is pre-calculated so the lookup is trivial.
USE TILED, MIPPED TEXTURES.
Oh and JPG is in general a truly horrible format for textures. Use PNG, EXR, TIF or anything other than jpg.