We computer folks don't really use it as jargon; it means the same thing it does in standard English.
Its possible the term came from Baseball, as that's the only other place I can dig it up. For example, here's a story about players hitting a ball into nearby river "on the fly" (in this context that means, without it hitting the ground). It is also used in that game to indicate a throw that someone makes immediately after a catch without stopping to make a separate throwing motion.
The general gist in a program is that it is an activity that is done when needed, rather than being done in a separate execution (typically beforehand). So in the computer sense, that means the work is done while the program is executing, rather than doing it "offline", or once before any program is run and reused every run.
The advantage of creating something "on the fly" is that you can create it based on the very latest information. The disadvantage is that you may end up doing a lot of work to create the same thing multiple times.