I am not a MIPS expert, but the maximal offset of the relative jumps has nothing to do with the size of the program itself.
The jumps can be serialized by the compiler or manually in the assembly code. This way, one can jump on any distance up or down without problems.
;it is pseudo code, not mips
start:
jmp to_the_limit
.....
.... 256MB bloated code
....
to_the_limit:
jmp even_further
....
.... another 256MB of even more bloated code.
....
even_further:
jmp this_code