The OpContext constructor you reference in the commit making this change[1] has pretty much always created the ObjectState objects. This reset is deliberate from c4442d70ed75690be1ed73d4931fbbdae9dfa92e in order to handle the case where an OpContext gets re-executed from the beginning after performing part of an op (right now, I think that's only for copy-from stuff, but I'm not certain). We could perhaps be more clever about conditionally resetting, but we can't just drop this line.
Has it actually shown up as being expensive somewhere?

[1]: PG: The reset_obs is not required any more as the OpContext constructor is taking care of creating ObjectState objects.