1. GETMAIN storage, unless you treat it special via the SHARED option, goes away when the task ends. If the storage record is needed past the end of the task, GETMAIN is not usually a good choice. Using SHARED, unless it is definitely deleted via a FREEMAIN at some point, may lead to S-O-S (short-on-storage) conditions for the CICS region.
2. With GEETMAIN storage, you have to keep the address available somehow for whatever programs want to use it. This requires special consideration and use of a TS queue or VSAM data record since the task using the storage may have no relationship to the task that put out the GETMAIN storage (hence passing the address through DFHCOMMAREA wouldn't work). EXEC CICS LOAD PROGRAM is easy, requires no special considerations, and the use count tells you whether or not the data table has been loaded into memory already.