Reuse is recognized as a fundamental best practice within the IT industry and has been practiced from the earliest days of programming. This basic principle is the basis of many other best practices including modularity, loose coupling, high cohesion, information hiding and separation of concerns.
The idea is that a solution should be comprised of reusable modules instead of replicating complete sections of the solution no matter how large or small. Each module is written once and maintained in one place. If another aspect of the solution needs the same functionality then it can simply delegate to the module that provides that functionality. This avoids redundancy within the solution, improves maintenance time, and promotes consistency.
Within IBM BPM resue is achieved by wrapping reuseable aspects of the solution within a service. A library of reuseable services may be developed that can simply be dragged onto other service or BPD diagrams as many times as required. Many other design patterns are based upon this idea. For example, the task service design pattern illustartes a specific example of a reusable service.
Services may be used to wrap other model artifacts, such as coaches and server script, that cannot be reused directly without introducing redundancy. The coach service design pattern and data access service design pattern provide good examples of this.
Generally it is a good idea to avoid exposing java script to business users wherever possible. Wrapping server script within a reuseable service hides the complexity of the Java Script and provides a simple component which the business user is more familiar with.