Increased functionality (for example,global package variables can be declared and used by any proecdure in the package) and performance (for example all objects of the package are parsed compiled, and loaded into memory once)
A package allows grouping of similar procedures. This is extremely important when working on a system with 500 stored procs. Also it allows some procedures to be made public and private and common variables and structures can be defined at the package level instead of inside each procedure.