Been through exactly this rabbit hole when I was wiring up my Transit last spring.
Short answer: trust neither blindly, but lean on the SmartShunt for day-to-day monitoring once it's properly configured.
Here's why. The BMS is primarily a protection device — it's watching cell voltages and temperatures to keep things safe. Its SOC reading is often just a rough voltage-based guess, and depending on the BMS manufacturer, the algorithm can be genuinely terrible. My cheap Daly was reading 40% when my Fogstar cells were practically full.
The SmartShunt does proper coulomb counting — it's measuring actual current in and out over time. That said, it's only as good as your settings. If your battery capacity, Peukert exponent, charge efficiency factor, and tail current aren't dialled in correctly, it'll drift on you.
The bit most people miss: the SmartShunt needs a proper synchronisation event to reset to 100% — meaning it needs to see the battery reach absorption and then hit your configured tail current. If your charger is undersized or you're running solar through a separate controller that Victron can't see, it may never fully sync.
What's your setup? Are both devices reading from the same shunt, or is the BMS working off cell voltage only? Also worth checking what capacity figure you've entered in the Victron app — I've seen people accidentally halve their usable capacity in the settings.
Others on here have way more data-logging experience than me with this — @anyone running a Victron + JK BMS combo, be curious what you're seeing.