Difference between DEFINE_CHAIN_EVENT_STEP and DEFINE_CHAIN_STEP procedure
First of all a chain is a name referred to a series of programs which are linked together for a specific objective. 

So the DBMS_SCHEDULER.DEFINE_CHAIN_STEP procedure define an step to point to a program or a nested chain. 

BUT, if you wish to define a step which waits for a event to occur to be executed then you need to use DBMS_SCHEDULER.DEFINE_CHAIN_EVENT_STEP procedure.

The following blog post from Database Journal contains a very good example of using Job Chains.



Figure: Flowchart is taken from database journal blog post by Jim Czuprynski.

For example, according to the above flowchart, to perform employee paycheck file validation steps it file has to be arrived. To define such step you need to user DEFINE_CHAIN_EVENT_STEP procedure. 

Go to the referenced link for details.

Reference: Job Chains