See also: https://github.com/tc39/test262/pull/274#issuecomment-103415105
As @anba pointed out, there don't appear to be any implementations that follow the spec on this point. Generally, implementing the spec as is would require tracking the original arguments separate from the formal bindings just in case they might be needed in rare cases. Avoiding this work would be difficult. It's probably better to amend 9.4.4.2 similar to @anba proposes - by first consulting the current value of the mapped binding and setting that on the arguments object before removing the mapping. This seems to better reflect implementation reality.
This appears to be a spec. bug that goes back to ES5.
@anba's fix seems about right
Fixed in ES2016 Draft (1afb8e6).