orderby not working for query_posts using array of IDs

I think I got it. You’re querying for sticky posts. Attachments can’t be sticky at least by default. Hence, you’re see the normal loop order when sticky posts are involved. So if you add this to your second args array:

'ignore_sticky_posts' => true

I think your problem should be resolved.

Here’s the relevant codex section on that argument.