When a workflow runs an activity and that activity throws some kind of unhandled exception you would notice that your workflow get terminated. I have see in many articles that explain how the termination happens. Now this is fine only for a rare set of hello world scenarios. When it comes to an enterprise application we usually expect to notify that some error has happened and probably redo our work.
Now if the workflow terminates how the heck are we supposed to re-execute the workflow cause its already terminated right :) and you get the "Workflow not found in persistence store" when you use a store like SQL . Now this happens when our activity doesn't have a fault handler associated with this it. So one of the solutions we tried for state machine error handling was this.
I believe there are many more ways of fault handling. I even know of cases where customers hacked the stored procedure of Insertworkflow to avoid workflow deletion on termination.
Anyway this is just on of the easier ways out to clean up incase you have better practices do leave a link :)