I have not tried it yet. But I am sure that I can do the LZWdecode directly to the output device. i.e. eliminate the full imageData[] array. It might be convenient to buffer one raster line.
This would mean unlimited size of GIF. Most importantly, an ARM with 32kB SRAM would be practical. You still need 16kB for LZW decode. A STM32F103 with 20kB would be very tight. Most M0 devices and all AVRs are out of the question.
The alternative is to store each frame uncompressed. Your 128x160 animation has 57 frames. This is a lot of SD memory but you save SRAM. In practice, a UNO could blit each frame from SD or Flash memory chip. Fine for small GIFs but the SD speed will be noticeable on large GIFs.
David.