Laravel 8 different responses when filtering models and collections

I’m sure there is an obvious explanation here, but I’m getting weirdly different responses when filtering collections.

    $c=Media::all()->collect();
    
    // first set of commands
    $filtered=Media::all()->filter(function($item,$k){ 
      return in_array("mp4",$item->extensions->toArray();
    })->count(); // 97
    $cFiltered=$c->filter(function($item,$k){
      return in_array("mp4",$item->extensions->toArray();
    })->count(); // 96    
    Media::all()->count()==$c->count(); // true
    $ct=Media::all()->count(); // 173

    // Now - additional weirdness
    // same commands but changed filtered variable name
    
    $newFiltered=Media::all()->filter(function($item,$k){ 
      return in_array("mp4",$item->extensions->toArray();
    })->count(); // 100
    $newCFiltered=$c->filter(function($item,$k){
      return in_array("mp4",$item->extensions->toArray();
    })->count(); // 83
    Media::all()->count()==$c->count(); // true
    Media::all()->count()==$ct; // true

These were run back to back with essentially no time passing. The only difference between the first set of results and the second set is that I changed the variable names.

I’m not a Laravel developer in general and I can’t make sense of this.
Can anyone explain what’s happening here?

note: This is Laravel 8 with php-7.4. I’m executing the code in the artisan tinker shell.