@Anonymous
I used your exact scenario in the Items property of a gallery.
Here is the Items property:
With({
OptionsCollection: ["Roof Style - Gable", "Roof Material - Metal", "Siding - Lap"],
TasksCollection: Table(
{Task: "Install Roof", Options: "Roof Material - Metal, Roof Style - Shed", Price:1460.5},
{Task: "Install Roof", Options: "Roof Material - Metal, Roof Style - Gable", Price:1660},
{Task: "Install Roof", Options: "Roof Material - Composite, Roof Style - Shed", Price:1220.5}
)
},
Filter(
TasksCollection,
With({_items:Filter(Split(Options, ","), !IsBlank(Result))},
CountIf(
ForAll(_items, Trim(Result) in OptionsCollection.Value),
Value
) = CountRows(_items)
)
)
)
Here is what it resulted in:

So, the formula works for the scenario you provided.
What are you now doing that is different than that scenario?