In my experience with 301 redirects, the end URL is only set in IIS and this is the only place that defines exactly where you're redirected to. What might be happening to remove the www is the code on the site you're redirecting to?
If your host confirms the URL they are redirecting to contains the www then I'd check code on the end website to make sure the change isn't happening there.