These phases originate in the SystemC world, so to give you a better idea of their purpose, let me quote from the SystemC LRM since the concepts still apply.
end_of_elaboration (note that SystemC "modules" are the equivalent of OVM component classes):
allow an application to perform housekeeping actions at the end of elaboration that do not need to modify the module hierarchy. Examples include design rule checking, actions that depend on the number of times a port is bound, and printing diagnostic messages concerning the module hierarchy
allow an application to perform housekeeping actions at the start of simulation. Examples include opening stimulus and response files and printing diagnostic messages
Hope that makes it clearer.