Why Opentelemetry spans with same trace ids could have different transaction ids?

I see a strange behavior for Opentelemetry integration. We have applications in PHP and Go which are linked with GRPC. I've made a manual Opentelemetry integration for PHP (with GRPC transport). However there is a strange situation when some of spans are not linked (but I'm absolutely sure that they should) despite the same trace id. Metadata tab for them shows different transaction ids but the same trace id. What could be a reason for such a behavior? I am able to find all of them by trace id on APM's Traces tab. Also, in some endpoints (also PHP http -> PHP GRPC Client -> Go) everything is correct: I see the same transaction id, same trace id and all the spans for the operation on one screen.

Kibana version: 7.17.1

Elasticsearch version: ---

APM Server version: 7.17.18

APM Agent language and version: No agent. PHP uses manual Opentelemetry integration with GRPC transport.

Original install method (e.g. download page, yum, deb, from source, etc.) and version: docker containers

Fresh install or upgraded from other version? Fresh

Is there anything special in your setup? No

Description of the problem including expected versus actual behavior. Please include screenshots (if relevant):

Screens of a Metadata tab for a problem spans (one trace id but different transactions). Also want to remind that telemetry for some of the endpoints of this service works fine.