How to disable creation of node revisions on programmatic node update?
Right now, this isn't possible with content moderation installed without doing backflips such as replacing the moderation handler for the node entity type. 

This is however being worked on! Here are some issues which are relevant to the problem you are having:


Allow 'syncing' content to be updated in content moderation without forcing the creation of a new revision
Allow the ChangedItem to skip updating
Better describe how SynchronizableInterface should be used for content entities


The proposal is essentially two pronged:


Better describe to callers of SynchronizableInterface::setSyncing() when it's appropriate to mark an entity as "syncing".
Encourage implementors of entity lifecycle hooks to reduce disruptive side effects while entities are syncing.


Quoting myself from the issue:


  IMO, the current 'syncing' status for content entities is shaping up
  into a flag to indicate that a save is happening under conditions
  which are outside of a typical user initiated content update and that
  as much as possible, side effects from that save should be limited.
  Examples might be:
  
  
  Deploying a workspace.
  Batch updating old revisions.
  Running an update from a migration.
  
  
  After defining some of those scenarios it becomes
  easier to rationalise eliminating some of the side effects that have
  been discussed (CM revision handling + changed timestamp).


In your case, you are attempting to resolve integrity in your model by bulk updating existing entities/revisions, it's outside a standard editorial based content change, so in my opinion it fits very clearly within the semantics that are being proposed for content entities and this interface. So with a few of these patches applied your code sample might look like:

  $entity-&gt;setSyncing(TRUE);
  $node-&gt;save();


And then the changed timestamp wouldn't be updated and content moderation wouldn't force the creation of a new revision.