Several times I've been wondering why multiple [osc~] or [cos~] are drifting apart.
Now, just found it's a bug, that is known since 2015 (!) but didn't see it come up here on the forum yet:

Pd's cosine table has some small DC-offset.

Here is the pull request:

And there the two relevant patches of this topic from the Pd-mailing-list:

demonstration of drift in FM:

workaround with symmetric and bigger cosine array and [tabosc4~]:

And in here is another patch comparing different tables: