That is a very good question and probably there is no right answer for it. Everyone has their own method of using re-usable called scripts or functions. It also depends on the automation tool you are using at the time I would suppose. I personally prefer to do the checkpoints in the called scripts, but using variables in the checkpoint command. In that way I can pass the window name and object parameters from the main script. In my situation we have 13 basic report setup windows which all contain similar objects. I have a main script for each window and a shared repository of called scripts and functions. In this scenario I have a choice of either going through the object repository and renaming all of the objects for each window so that the similar ones are like named or passing the parameters for the objects to the called scripts. I chose to pass parameters. I tend to believe this method is easier.
Are you using keyword? That in itself makes the overall creation and maint. easier. Unfortunately we don't have QTP. I have used it in the past and much prefer it. The tool I'm using now is not as good, but has many of the same features.