Here comes a correction: At first I thought it worked, because started to show 200 OK headers randomly, but not related the hotfix above, not sure if it was browser cache or something else.
I found the source of 404’s though, it’s Batcache plugin. I added a line to disable it for site map URL (just for parent site map (sitemap_index.xml) was enough) and it worked. Like this:
if( strpos( $_SERVER['REQUEST_URI'], 'sitemap_index.xml' ) )
return;
This fix also worked for my site that have posts and pages, hosted on nginx. Sitemaps (created with Yoast WordPress SEO plugin) were visible in browser but when you examine response headers with Firebug, they were shown as 404 Not Found. (Rewrite rules were applied.)
Noted here for someone else may having this problem with same tools.
I rolled back my post, sorry. False alert.