Hola @ortzi,
no sé si hay una manera más correcta que otra para hacer esto: la cuestión depende más bien de si tu app requiere conexión para funcionar o no.
Si la app no requiere conexión, tu única alternativa es tener las fotos como recursos. Tal vez se puedan optimizar las imágenes para que ocupen algo menos de espacio, pero poco más. Formatos como JPEG, PNG o GIF ya están comprimidos; otros formatos podrían comprimirse para ocupar menos espacio, pero luego hay que descomprimir cada imagen para mostrarla, lo que puede ser útil o no dependiendo de cómo se visualice la galería.
Si la app requiere conexión, podrías en vez de poner las imágenes como recursos traerlas desde un servidor. En este caso también es bueno optimizarlas para que se transmitan más rápido. En conexiones lentas, la galería se verá como carga cada imagen y la experiencia es peor. Esto puede optimizarse un poco del lado del servidor, si la petición de la imagen envía el tamaño de la pantalla del dispositivo: podrías enviar una imagen del tamaño menor posible para cada pantalla, con lo que la cosa mejora mucho.
Por último, alguna solución híbrida: las imágenes están en el servidor, pero cada vez que se visualiza una se guarda localmente. La app así ocupa menos, pero irá creciendo el uso de espacio a medida que se vean las imágenes. Luego, las imágenes ya vistas se ven a velocidad local.
Es cuestión de sopesar los factores a favor y en contra de cada cosa, en función del objetivo a cumplir por la app.
Saludos cordiales!