I ran into the same problem and I set up a less-than-ideal workaround Inspired by this thread.
In the WebRole OnStop handler, call this to recycle all application pools on the role VM:
var p = Process.Start("cmd.exe", Environment.ExpandEnvironmentVariables(@"/C %windir%\system32\inetsrv\appcmd list apppool /xml | %windir%\system32\inetsrv\appcmd.exe recycle apppool /in"));
p.WaitForExit();
(You'll need to make sure your web role runs with elevated permissions by adding <Runtime executionContext="elevated" />
to the csdef file directly under the WebRole node)
Note: Be sure to test your shutdown code both with role reboots and with scale-down operations; I've found that things like database connections may not work during scale-downs.