Provided the VoIP provider uses proper interconnects and premium routing, the CLI will be displayed and it will be correct.
I don't know about the other VoIP providers in SA, but I do know that Switch Telecom uses premium routing which guarantees that, if a Switch client calls abroad, the foreign phone should show a valid CLI (e.g. +27875501234). Similarly, if they call an SA number, the CLI will be delivered correctly (e.g. 0875501234).
The reason you may see an SA number on your mobile rather than the true callers' caller ID is that the people overseas calling you are using an economy service where calls are routed into South Africa mobile via grey route (a SIM bank) rather than via an official interconnect. This happens because the SA mobile networks have an anomoly where there is a higher wholesale interconnect rate than their retail tariffs less handset subsidies, service provider commission, etc. Basically, a number of niche telecomms operators are arbitraging this price differential and selling SA mobile minutes to the foreign networks at below the rate that MTN, Vodacom & Cell C offer via the "official" routes. The caveat is that because these calls are via retail service, they will either show private number or the caller id of the particular SIM card (within a bank of hundreds of SIMs) that was used to dial that particular call to you.
This really does screw with the telecomms market, however, greed on the part of the mobile networks ensures that it remains an issue. You see, they receive way more calls from local networks (e.g. Telkom) than from overseas, so they'd rather keep their extortionate interconnect rates as is then reduce them and eliminate the grey routes sold to the foreign market.