Custom Procedures allow you to create code that can be reused without having to rebuild it over and over again.  Taking advantage of inheritance means that you can even create custom procedure code that can be shared between different types of objects as long as they are of a similar class.