Any property change results in a refresh event which will propagate automatically to any other resource with a subscribe/notify relationship.
:self_refresh has a specific purpose, which is to refresh the resource itself when one property changes. The mount type uses this because it actually models two resources (a (v)fstab entry and a live mountpoint, something that mountproviders fixes, but never took off), so the selfrefresh makes it possible for the resource to refresh the mountpoint when the fstab entry changes.
Generally I don't believe you can change which property changes generate a refresh, however if your type is receiving notifications then you can implement the
refresh method on the type to ignore refreshes under whatever conditions you wish.
The other mechanism for ignoring received refreshes was added in Puppet 3.3 and is used to ignore refresh events when a property has changed to a particular value. It's used in services to ignore restart requests when the ensure property has changed to
running (we don't want to restart a service after it's transitioned to running, it'd be pointless.)