the mapping of 2x IOPs to 2x cost seems tenuous to me.Well, it's not just the number of disk I/Os which increases -- you've also got the network traffic and CPU time associated with each copy of the read request you send out. Given that (a) DynamoDB is using SSDs, and (b) Amazon seems to love using slow languages, I'd guess that the CPU time is what ends up dominating their cost.
why shouldn't Amazon just provide this data?
Amazon is very secretive. And I can't really blame them; after all, why would they want to subsidize their competitors' development?
And finally, why not allow users to place this cost on the write path instead? "W=3" seems like a reasonable option
I'd guess they wanted to be able to tolerate partitions without sacrificing availability. (At least for the common case where "partition" means that nodes are completely offline and are both unable to communicate with other nodes and unable to receive incoming requests.)