You can do this with some array image fiddling. That's always a bit tricky, and not very easy on the eyes. To understand this, I suggest that you add the intermediate array images to the map and inspect, to see what they contain.


    var anomYearArray = anom
      .toArray() // Convert collection to 2D array image 
    var anomArray = anomYearArray.arraySlice(1, 0, 1)
    var anomYearSorted = anomYearArray
      .arraySort(anomArray) // Sort by anomaly
      
    
    var rankArray = anomArray.not().not() // An array of 1
          .arrayAccum(0, ee.Reducer.sum()) // An array from 1 to number of anomalies
          .multiply(-1).add(anomArray.arrayLength(0)).add(1) // Reverse array
          
    var anomYearRankArray = anomYearSorted.arrayCat(rankArray, 1)
    var rankedAnom = ee.ImageCollection(
      ee.List.sequence(startYear, endYear)
        .map(function (year) {
          year = ee.Number(year)
          var yearMask = anomYearRankArray.arraySlice(1, 1, 2).eq(year)
          var yearImage = anomYearRankArray.arrayMask(yearMask)
            .arrayProject([1])
            .arrayFlatten([['anom', 'year', 'rank']])
            .set('year', year)
            .set('system:time_start', ee.Date.fromYMD(year, 1, 1))
          return yearImage
        })
    )

    var anom2020 = rankedAnom.filterMetadata('year', 'equals', 2020)
    Map.addLayer(anom2020, {bands: 'rank', min: 1, max: endYear - startYear + 1}, 'rank 2020')

https://code.earthengine.google.com/82c841c8936fc562f6b17760876a9730

Here it is plugged into your complete script:
https://code.earthengine.google.com/96066c8aea034d99bf4393eba8bf51f5