The person offering the cheaper price is hurt, because someone offering a worse price is getting filled before him. Essentially, the moral argument of Reg NMS is to enforce price-time priority in a distributed system. Whether it actually accomplishes that is...well, I'll leave that up to you to decide.
It enforces price priority, not price-time priority. Exchanges can use pro-rata, etc. at the same price level; and if multiple exchanges offer the same price level, a BD is free to choose any of those to route to.