This is the exact expression I used, in the "Set an expression" button in the Symbology pane in Pro. This pulled in my potential values from a field, and then output them into the groups I wanted for the symbology.
Decode(Left($feature.ELCODE,2), "KP", "Algae/Lichen", "NA", "Algae/Lichen", "NL", "Algae/Lichen", "AA", "Amphibian", "AB", "Bird", "AF", "Fish", "NF", "Fungus", "IA", "Invertebrate", "IC", "Invertebrate", "II", "Invertebrate", "IL", "Invertebrate", "IM", "Invertebrate", "IP", "Invertebrate", "AM", "Mammal", "NB", "Plant", "PD", "Plant", "PG", "Plant", "PM", "Plant", "PP", "Plant", "AR", "Reptile", "Other")
For my use, I wanted to symbolize on the first two characters of the ELCODE field, which is where this part of the expression comes from: Left($feature.ELCODE,2)
Decode works off a list made up of first the value from the field being examined, and then the output that matches it (kind of like a simplified If/Then statement). In my case, for the values "KP", "NA", and "NL" all return the same "Algae/Lichen" value, which essentially groups those input values in the symbology class. Note you also need one last output value, which gets returned if the input value doesn't match any of the possibilities. Since they all get grouped from the Arcade expression, it then symbolizes correctly within the service in both AGOL map viewers, and when added into Pro.
More info on Decode here -
https://developers.arcgis.com/arcade/function-reference/logical_functions/#decode