william,
service contract implementations are bound to their service contract by way of SQL. Checkout authorize-gateway-sc-create.sql for an example. At the end this script also binds the implementation to the contract.
The Authorize.net implementation is defined as a singleton application so that it is clear that the package can be mounted. Mounting the Authorize.net implementation provides access to the admin pages of the gateway. If your manual gateway doesn't have any user or admin pages, you could make it a service otherwise a (singleton) application would fit the bill better.
/Bart