A BPMN end error event is actually a way to throw rather than catch (or handle) an error. So your process can define two (or more) end events one for the 'normal' case and one for the error. Why you would want to do this depends largely on whether you are throwing an error from a process to a 'higher' process that started it or to the code that started it (for instance the Java code that embeds Activiti).
The user guide puts it this way:
<blockcode>
When process execution arrives in an error end event, the current path of execution is ended and an error is thrown. This error can caught by a matching intermediate boundary error event. In case no matching boundary error event is found, an exception will be thrown.
</blockcode>