A situation I have observed a number of times while working with the SharePoint object model is that workflows don’t appear to be triggered on update calls.
In the past I have worked around this issue by simply adding some code to loop through the registered workflow items and manually triggering them which has always solved the problem.
I have read recently that the reason the workflow fails to run is due to it being run on a separate thread and that quitting the web app/console app before the asynchronous workflow threads have finished causes them to abort and from the end users perspective the workflow appears not to have run. This is a known bug in SharePoint but there are a number of workarounds so it’s not considered a show stopper.
It is however possible to work around this limitation by calling SPSite.WorkFlowManager.Dispose() after the item update. This will wait for the workflow threads to complete before exiting.
Some useful links for further information: