This does seem a little unfair, but I'm not sure what the alternative is, since it does cost resources to check if the queue is empty.
The thing I too would like to see from AWS would be some kind of callback api where an HTTP request would be sent to an EC2 instance when something useful happens in S3. That would allow you to dispense with polling entirely.