Same problem here, 16GB 3GS. Tried all the voodoo solutions - re-insert the sim card, let the battery drain until phone turns off (and then some), mind the number of running apps, switch to/from 3G, etc. For good measure, I ordered a new battery from ifixit and installed it last week. Unsurprisingly, this fixes nothing. I wonder why people think something as simple as a lithium ion battery protection circuit would make a difference (but hey, at least I have a fresh battery now). Same story for number of open apps. Applications being in use/in the foreground get allocated the memory needed, and the memory contents of apps not used in a while get swapped out to storage. Just like any present day operating system. CPU cycles are irrelevant. A 600MHz CPU provides more than enough power to make a phone call and keep dozens of apps dormant at the same time.
I have made calls up to half an hour without issue, so I understand why one would think the problem is solved if one were to make a call taking that long. Problem is, this issue can still creep up on you. Like it did today. Got a call, switched ears a couple of times because I was busy with something, and bam, reboot. And pretty quick too, couldn't have been more than four minutes. A New Record (for me at least). And as always, no sim unlock prompt, and all open apps still running (or re-opened, not sure).
As far as I am able to assess, the only non-voodoo solution is either Apple realizing that they should keep ALL of their customers up and running, or JB'ing the device and replacing the mobilewatchdog file with the iOS 3 version.
The most revolting is actually that Apple pretends that this problem doesn't exist. But literally thousands of posts on this forum say it does.