Generally speaking, US telecoms and the companies that pay for the 800 #s don't want to pay for incoming international calls and will block them. What I don't understand is why one day it will work, the next it won't and then the next week it will. THAT makes no sense to me at all unless they are running their lines the same way our wifi provider does...sometimes we are on satellite and other times we are connected via DSL/codatel. When we access the net via Sat, all my info is in English and I have no problem downloading (legal) music. When we are on DSL, all my ads are in Spanish (not a problem) but I can't even download legal things because they know it is going to the DR (or the originating ISP is DR). Now that I think about it, I'm pretty sure this IS the reason behind Orange's inconsistent access to 800 #s.
It has nothing to do with money. If it did, there would not be substitute access numbers (e.g. 880 for 800). The companies have 800 numbers and are made for that purpose, so the calls are free to callers. If international caller calls 800 number, it is not charged (international leg) to the US company, only the regular 800 charge. Customer always pays for the originating international portion of the 800 leg.
It has to do with routing, one and only reason. Similar to your wifi connection. Carriers (Orange, Tricom, Codetel) use many "underlying" carriers to terminate their calls, which in turn use many others, many different routes, etc. Basically a British telecom call from Britan to India may go over a Global Crossing network sold by Deutche Telecom and resold over KPN, where a local portion in India may be termiating over a local VOIP carrier selling services on the Arbinet theXchange and bought by the above-referenced Global Crossings. Sounds complicated? Whuh? Yes it is.
Needless to say, when you dial 800 number, and if you are able to dial it, it is only in the case when the termination onto the toll-free network is done from within the USA or Canada. For example, if Orange contracts termination with, let's say, Sprint, or if at thye last portion, Sprint is the one that is terminating. If, on the other hand, is Telmex terminating, or BT, or somebody-else-VOIP and the call appears to come from outside the USA, the 800 access is blocked and must be properly routed via 880 access. In this case you hear a message that the call is not toll-free and you will be charged for the international portion of the call.
To sum up, if you can get through dialing 800/888/877/866 number, it is because the call is appearing as being routed from within the USA/Canada. If you can not get through and you must dial 880/881/882 instead, it is because the call is appearing as being routed from outside the USA/Canada.
The reasons why the call may appear once as being routed from within and other times as from outside the USA/Canada are various, and most have to do with routing and terminating specifications of calls. Mainly, Tier-1 carriers (AT&T, MCI, Sprint) terminating on Tier-1 network (via SS7) will require substitute dialing rule (880 instead of 800 etc.) in order to bill for the call the sending carrier as a regular USA-terminated call. However, the same carriers on VOIP networks will not necessarily require that. Tier-2 carriers (Global Crossings, Qwest, T-Systems, Primus, etc.) usually route calls the way they appear to originate from within the USA.