It's been quite a long time since this question was asked but let me share my understanding:
While RIF focuses on the interchange of rules between rule-based systems, SHACL focuses on the validation and constraint checking of RDF data. So they target different aspects.
RIF focuses on providing a standardized format for expressing and exchanging rules between rule-based systems, allowing rules to be shared and executed across various platforms, and providing the necessary framework for it.
On the other hand, SHACL is a language specifically designed for specifying and validating constraints or shapes on RDF data graphs. It allows defining rules that describe the structure, data types, and interrelationships of resources in RDF graphs, with the aim of defining and enforcing constraints on the data, enabling the validation and verification of RDF data against predefined shapes.