I dont think this is entirely Apple's fault, there is a wide variation between countries as to what format outbound caller ID is transmitted as well as how many digits are processed from inbound calls. In the paerticular examples above,
-The +1 country code is used by all of North America and Caribbean and is almost always followed by 10 digit number, totalling 11 digits
-In the case of countries with a 2 digit country code, the total length is 12 digits
Many carriers (and maybe some gateways in transit over satellite between countries) are only set up to recognize 10 digits so they drop either first or last excess digits.
The case of Trinidad above is that the different carriers or gateways see the +1 number differently, in some cases the 868 is recognized as an international number with the +1, in others, a regional (1 868) or local number (7 digits only).
Some phone manufacturers limit the lookup in the contact list to the last 4,5,6, or 7 digits which works fine in most cases, with the exception of when it is the last digits that are dropped
In most cases, on my iPhone, on ATT with calls from a 2 digit country code, it has been these first 2 that get dropped from some European and South American countries although UK numbers seem to be fully transmitted/received.
My workaround so far has been to add consitently erroneous and frequently received calls in the incoming format as an "other" phone for the particular contact. I can see the inconvenience of this in the Trinidad case though. the only way Appl can get around this would be to look for recognition of only the last digits as per above which would probably fix a large percentage of cases but not all