I’d like to know why some companies don’t allow the developer to create and run natural programs in batch mode.
does it consume too much computational resources? may it damage the environment? does it impact CICS?
You really need to ask those who establish and maintain policies and standards in your shop to get the answer(s) pertaining to there. I have never worked in such a shop myself, so I will take guess as to possible reasons, and they will all assume development and production are running in a common LPAR:
Production is CPU-constrained, and therefore even moderate batch job submission by developers in development causes a performance hit.
There is no security (i.e., RACF) in place to keep you from running jobs with the production proc or from modifying production datasets, or security has been granted too widely.
Output destinations are also not restricted, and developers might send output to a real production site or customer.
You would not impact CICS except as CICS might be competing for system resources. If you cannot run jobs in dev, how do you test new batch jobs prior to migrating to production? This can only work (imho) if they make you create and schedule development / test jobs.