I added the use counters and filed the bug and so I'm biased, but LGTM.
For nodes other than Attr/Element, namespaceURI and localName will go from returning null to returning undefined. This will usually not matter, because null == undefined, but it's possible to depend on the difference: if (node.localName !== null) { assumeArgumentIsString(node.localName); }.
Use counters can't tell us how the return value is used, so I think we should try making the change soon after a branch point to maximize bake time, and be prepared to revert and change the spec if it doesn't work out. Deprecation does not seem meaningful, since usage of localName is around 0.1% and we're assuming that this is mostly bogus or non-breaking usage to even attempt the change.
Note that Node.prefix was in the same situation and was successfully removed in January 2014: