Event receivers lack state. A workflow doesn't just fire once. It is stared, has some events that are fired, but they represent a sequence of actions that are all fired and that act on some state specific to the lifetime of the whole workflow. With event receivers there is no state. If you want a series of event receivers to logically represent a stateful workflow you need to explicitly create a list or other external storage medium that can represent that state.
(Note this is the most important conceptual difference; obviously there are any number of lower level differences on an implementation, rather than conceptual, level.)