@neauoire it was quite common on the Atari ST. One time I used it was a demo where the screen consisted of a number of tiles that were flipping to reveal various patterns (spelling out the names of the different parts of the demo).
The demo was using overscan, and when you do that on the ST you need to stay in sync with the raster beam at all times, so you want to avoid conditional branches if at all possible.
So, the main loop consisted of about 200 JSR (jump to subroutine) calls, and prior to each frame the jump addresses were rewritten to point to different routines that managed one tile. Each routine was written to take exactly the number of cycles needed to draw one scanline, so it could always stay in sync.
Of coure, a list of addresses could be used as well, but that would have taken more time since you'd have to load the pointer from memory into a register and save it back. If not, the individual routines wouldn't have all registers available.