I'd think prefix based filters would be more likely to be correct.
Since you have to explicitly list what you think you should be announcing
you protect against having routes you don't expect in your tables and
against having interactions that cause unexpected routes to get tagged as
OK, so then what do you do with BGP customers? Ideally, you'd be filtering
the ingress advertisements from your customers. Now you have to add those
prefixes to your egress filters as well.
Using communities to accomplish this is much more efficient and "hands-off".
You can build your customer BGP filters off data in the IRR. Make
it a requirement that BGP customers must keep that information up to date
(or do it for them).