If I had to guess: because images are Attachments, and Attachments are a Post-Type. Thus, in order to edit an image, which is an attachment, which is a post, requires the edit_post
capability.
EDIT
Don’t you have your capability
mapping array keys/values reversed?
e.g. you have 'edit_posts' => 'edit_listings'
. Shouldn’t it instead be 'edit_listings' => 'edit_posts'
?