This is actually to prevent data corruption when saving fails (usually because of validation). I'm not 100% sure we need this, but it was not acceptable for me to have entities with inconsistent state after a failed save operation. Not having this clone would lead to this case:

   $entity = new Article(['title' => 'Foo', 'body' => 'bar', 'comments' => [$comment1, $comment2]]);
   $articles->save($article); // Imagine $comment2 fails validation
   $article->id // This should be null
   $article->commentsp[0]->id; // this should be null, right? Well, it will be return a real id (but rolled back) without the clone
   $article->comments[0]->article_id; // This will return last inserted id for article, which was just rolled back because of atomic save