The latter description is the correct one. asUnprepareMultithread should be called after the last engine has been released.
It is not absolutely necessary that the calls are made from the main thread, but it is easier to guarantee the correct order of execution if it is done that way.
I'll update the manual to correct this. Thanks for bringing it to my attention.