I'm not a fan of this either.  It doesn't read as easily to me either since "Argument.IsSet" is a new API I've never seen until now.  I've seen others use a "Guard.NotNull" API, which read well.  But you're also reinventing code contracts, so that should be a consideration to use that instead.