OK, got it – what you are supplying is not actually the full dipolar coupling, just the secular part of it. It has a trace, and that’s not right because proper DD interaction is traceless. If you supply the full and proper traceless dipolar matrix to Spinach, everything will match.
When you supply coordinates, Spinach actually includes the flip-flop terms into consideration, hence the different result.
In general, Spinach expects that the user will supply “the truth” – i.e. the original unaltered non-approximate interactions. The approximations are applied by setting assumptions during a call to the secularity() function.