The cause is that the devices themselves are incorrectly implemented. This ranges from toothbrushes, to flashlights (where 99% of usb-c flashlights can't do C2C), to shavers, and small electronics/appliances. The problem is there isn't a standard way to know about this (or a name for this problem), so it's hard to tell what supports it or not. Generally, devices made by well known brands support C2C, but not cheaper Chinese-made devices, but there are exceptions in both cases.