You can use Mesh.Unweld before setting the face colors. There’s still a bit of unnecessary overhead (i.e. checking face normal angles), but it works well. Here’s an old topic that covers this:
Mesh.Unweld
Edit: Here’s the function I’ve been using since Rhino 6: