You are correct, having an update event fire on both Engine and Actor is more helpful for code organization and separation of concerns. It would indeed be possible to handle all your logic in the engine update function.
Generally updates off of an actor should be related to that specific actor, and updates off the engine should be related to the engine. For example, useful things to put in the engine update might but updating a score or health bar off of some state, or perhaps conditions for a scene transition.
Technically the engine 'update' will fire after all of the actor 'update' events are complete for an update cycle, the event is emitted at the end of the Engine.update, and the Actor.update methods. Although I would probably recommend against relying on the timing of 'update' events to perform any game specific logic. Currently Excalibur events are processed off a queue at the beginning of the next mainloop before anything else, this means all Engine events will be processed before all Actor events. So the engine event callbacks will fire before the actor ones. Maybe this needs to be changed/thought about more in excalibur?