This is only during an update to the community, correct? As in, changing some community setting?
If that's the case, it is ensuring that the languages selected for the community are a subset of the site languages and not some arbitrary value. Which is necessary for ensuring that funny business has not been done to the community settings via some raw call or request manipulation.
If it's only doing this on community edits, then the performance hit is worth it since it shouldn't be done very frequently in the normal course of use.
Try profiling the time it takes to complete the update request and see if it is actually as bad as you think.
Another option would be to check the languages provided to see if they have been changed, and only do the subset check if they have. That's really the only time it matters to make that check.