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:
https://github.com/pure-data/pure-data/pull/106

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

demonstration of drift in FM:
test.pd

https://lists.puredata.info/pipermail/pd-list/2015-11/112204.html

workaround with symmetric and bigger cosine array and [tabosc4~]:
fm-fix.pd

https://lists.puredata.info/pipermail/pd-list/2015-11/112244.html

EDIT
And in here is another patch comparing different tables:
https://github.com/pure-data/pure-data/issues/105