Disabling (dimming) the icon is ambiguous because dimming usually means something is temporarily not responsive. That’s not necessarily the same thing as an attribute being absent. There’s also the problem that gray is a fashionable color often applied with no symbolic meaning (e.g., the gray status icons beside “Stack Exchange” in the upper left of this page*). If a product lacks all the features (the users see a row of gray icons), the users may assume that means the product has all features –they may think gray is the only color the icons appear as.
Hiding is ambiguous because it could mean information about the feature is unavailable, as oppose to the feature is not present. Unless the users see some products that have feature, they won’t even know if your site ever tracks the presence of that feature.
An unambiguous indication would be to show the icon crossed out if the feature is absent.
If you are concerned about drawing too much attention to what the product does not have, then reduce the salience of the cross-out icons relative to the others. You can mute the cross-out icons appearance by coloring them gray-scale (but not all gray) or low-saturation monochromatic (e.g., dark silhouette). Don't cross them out with a red X; black is sufficient. The other more colorful icons will then stand out more. You can also make the other icons stand out more by super-imposing them over a large positive symbol (e.g., green light, check mark, or star)
*Yes, using gray to for active and present functionality is a bad practice, and shouldn’t be done, but it doesn’t change the fact that it is done, and you have to live with the expectations that sets in your web-abused users.