I went and explicitly tested AWS S3 behavior for you, to confirm it, and as usual found it differed slightly from their documentation,
The AWS error xml for the location constraint being invalid is: <Error><Code>IllegalLocationConstraintException</Code><Message>The us-west-2 location constraint is incompatible for the region specific endpoint this request was sent to.</Message>. So I revise my expectation, that I should get 400 IllegalLocationConstraintException if the placement group is invalid, and 409 BucketAlreadyOwnedByYou if the bucket exists & my user owns it.
The AWS behavior depends on both the endpoint AND the LocationConstraint value, but not the storage-class, as storage-class is per-object in AWS.
Connect to us-east-1 (s3.amazonaws.com)
The first CreateBucket always succeeds, returns 200 OK, the create seems to be proxied to the correct region.
A second request for the same bucket name, returns 200 OK if the region is us-east-1, and 409 BucketAlreadyOwnedByYou for all other regions.
Changing the LocationConstraint (eg create bucketname=x in us-west-1, then createbucket bucketname=x in us-east-1 gives 200 OK).
CreateBucket, LocationConstraint=us-east-1, repeated: 200 OK
CreateBucket, LocationConstraint=us-west-1, repeated: 409 Conflict: BucketAlreadyOwnedByYou
CreateBucket, LocationConstraint=us-west-2, repeated: 409 Conflict: BucketAlreadyOwnedByYou
CreateBucket, LocationConstraint=ap-south-1, repeated: 409 Conflict: BucketAlreadyOwnedByYou
CreateBucket, LocationConstraint=eu-central-1, repeated: 409 Conflict: BucketAlreadyOwnedByYou
(etc for all regions I tested, just us-east-1 returns 200 OK).
Connect to us-west-1 (s3-us-west-1.amazonaws.com) [all endpoints other than us-east-1]:
First request: 200 OK if endpoint location matches LocationConstraint. 400 IllegalLocationConstraintException if mismatch.
Subsequent requests: 409 Conflict: BucketAlreadyOwnedByYou if location matches, 400 IllegalLocationConstraintException if mismatch.
CreateBucket, LocationConstraint=(empty), all requests: 400 IllegalLocationConstraintException
CreateBucket, LocationConstraint=us-east-1, all requests: 400 IllegalLocationConstraintException
CreateBucket, LocationConstraint=us-west-1, repeated: 409 Conflict: BucketAlreadyOwnedByYou