I've found each language, out of expediency, often starts with a comparatively crude implementation of GC, and then gradually improves upon their work, leveraging knowledge from other platforms.
That said, gc is very subtle, and each runtime has unique characteristics that mean that what works best for one might not be ideal for others.
That said, gc is very subtle, and each runtime has unique characteristics that mean that what works best for one might not be ideal for others.