Yes - the provisioning profile for the ad hoc build is not a 'production' provisioning profile so StoreKit will direct itself to the sandbox. I believe that the sandbox environment can handle a production user ID just as if it were a sandbox test user.
You should expect this behavior - ad hoc is for testing and you don't want to charge people to test your IAP do you?
I'm perfectly happy with this behavior!
I was reading the documents as only the test account will be using the Sandbox.
But I now see:
"If the text “[Environment: Sandbox]” doesn’t appear, you’re using the production environment. Make sure you’re running a development-signed build of your app. Production-signed builds use the production environment."
Which indicates that adhoc builds always use the sandbox.