Most likely, your program is written for a 16F.
In which case there is additional "Page switching" code required.

16F's have their flash program memory divided into 2K "pages".
Whenever PBP does a GOSUB, it has to set PCLATH to the proper page before it can jump there.

For pages other than 0, it usually does it by setting 2 different bits separately, requiring 2 instructions.
But if the routine is in Page0, all it does is CLRF PCLATH (1 instruction).

So putting the subroutines first, and if they fit in Page0, it takes less code for all the GOSUB's or GOTO's.

hth,