Hi,
First, you need to identify which restriction is causing the discount from not being applied.
If you remove the restriction on the user, do you see the discount applied ?
If you remove the restriction on the product, do you see the discount applied ?
You say that when the discount is set for a whole category it is applied to some products and not to others. So that would indicate that the problem is not with the user restriction.
What is the difference between the products for which the discount work and for which it doesn't ? For example, could it be that some are affected to a vendor and some aren't ?