SW
I think the list of reasons why can be extended in the context of an APEX environment. a) Compiling code in packages improves performance by lessening the amount of interpreted code that needs to be parsed at runtime. This can be significant, and is the reason it's encouraged to move plugin PL/SQL to a package instead of retaining the inline PL/SQL b) Any missing privileges you may have in your deployment are more likely to be found at compile time, not runtime. c) Testing - not mentioned in the linked post, but a suitably de-coupled procedure can be unit tested outside the scope of APEX.