If I understand correctly, you are asking if there is a better approach than just store ENTITY_B.Id in ENTITY_A.BId. While this approach is fine, you should consider ability to query ENTITY_B data from system B and how strong system A relies on that data. In particular how system A should behave if B is not reachable or ENTITY_B is deleted.
I would recommend always begin with having some internal representation of external entities. This representation should hold data (other than key) that is important for system A but is unlikely to change in B or can be outdated. In my experience such kind of data always exists and dealing with outdated data in small isolated part of a system is usually easier than dealing with inconsistency in every part of a system. Internal representation also helps with updating data. It can hold last update time or synchronization status.
For example let ENTITY_A_B be an entity representing ENTITY_B in system A. We want UI in A able to display ENTITY_B.Name without querying B (for both performance and accessibility). So we can model entities in A like this:
ENTITY_A_B {
BId,
Name
}
ENTITY_A.BId strongly references ENTITY_A_B.BId
ENTITY_A_B.BId softly references ENTITY_B.Id
ENTITY_A_B.Name keeps value of ENTITY_B.Name