Hi Joe Borgione and Dan Patterson ,
I see you are having fun with Arcade and Python. Can't wait to join the party 
Before getting in to what you can probably do with Arcade in the attribute rule, I have a question... If you want to assure that a value is within a list of possibilities, wouldn't that be solved by using a domain? I am sure that it can't be that simple, so I will continue with the Arcade fun part.
What Joe was mentioning earlier of using the Distinct function in Arcade is correct. The example however, as you noticed, is using $layer, and $layer is not available in the attribute rule profiles. So, I am mentioning profiles and that is where a lot of the fun questions start with: depending the profile (where you want to execute the Arcade expression) you have a set of functions that you can use and a set of globals (the $ thingies) at your disposal.
Attribute rules are executed at the database level. This is important since it defines what $ thingies are available. At a database level when an attribute rules is triggered, it has no knowledge of the map a layer might be participating in. So we don't have the $map and we algo wont have the $layer (since a layer only exists in a map). What we do have is the current $feature (and the $originalFeature which provides a lot of fun too) and the $datastore.
What I normally do is I go to the Arcade playground (a place where you can play with Arcade and have fun or a huge headache): ArcGIS Arcade | ArcGIS for Developers . There you can select the profile of where you want to use Arcade:

Not sure if you want to create a Calculation AR or a Constraint AR (raise error during edit) or Validation AR (for example for batch validation). The globals and functions will not be very different but the return value will be. When you select the profile you will see the globals available:

The idea is to have access to the "layer" using the $datastore. The datastore is a FeatureSetCollection and you will have to indicate which FeatureSet you want to execute the rule on. For instance:
FeatureSetByName($datastore, "Name of your FeatureSet in the datastore")
In combination with the Distinct function is will be this:
var fs = Distinct(FeatureSetByName($datastore, "Name of your FeatureSet in the datastore") , "FieldName");
Now you will have a featureset which you can use to check if a value is in the list of values. You will still have to do a loop to see if the value is any record of the FeatureSet since you cannot use things like IndexOf on this since "fs" is not an array but a FeatureSet. So, probably more eficiently would be doing something like this:
var searchValue = 1023
var sql = "NGHBRHDCD = @searchValue";
return (Count(Filter(FeatureSetByName($datastore,"Tax_Parcels"), sql)) > 0);
You read out the value you want to test and you set up a sql, which you use to filter the FeatureSet from the datastore and do a count on the result. If that is more than 0 the value exists (returns true) and if not it will return false.