I would say that the dative version is more direct and more "including".
Ich habe es dir gesagt.
It kind of implies that the other person has heard and understood me.
The "zu"-version lacks that. It also tells us who we are talking to but it is really more about the mere direction than about this whole sender-recipient thing. The "zu"-version might also come across a bit clumsy.
Ich sage zu ihm, dass er ein Idiot ist.
Ich sage ihm, dass er ein Idiot ist.
I find the second one to be more offensive in a way because it comes closer. Another verb where the difference is a little more obvious is "schicken".
Ich schicke dir ein Paket.
Ich schicke ein Paket zu dir.
The "zu"-version could mean that I send it to your house, or that I send it your way. The dative version includes that you get it and use it. Things change when I send a person.
Ich schicke dir den Mann.
Ich schicke den Mann zu dir.
A man is a living being and you cannot receive or own him the you could do with a package. Hence, here the "zu"-version is preferable as the dative-version objectifies the man.
Anyway... I checked Google Ngram (here and here). According to that, the dative version is by far the more common one in writing... which doesn't say much about speaking though.