There is some misinformation in this discussion.
Google Voice uses regular land line or mobile phone service, not VoIP, for all calls. Inbound calls forward to a land line or mobile number over regular phone service, so an inbound call to a cell phone is simply a regular phone call as far as the phone carriers are concerned.
Outbound calls on an Android phone work like this: You can decide which calls you want to make via Google Voice's telephone network, or not. You can select to make all calls via Google Voice, or none, or ask each time, or just make international calls. You then use the Android phone's regular phone keypad to place the call, in the same way as a regular cell phone call. The Google Voice app hooks into the native phone dialer and intercepts the command from the dialer. If you've selected to use Google Voice, the phone will first call into a Google Voice gateway, again via the regular cellular network, and then the gateway will call your called party, and finally, the gateway bridges the two call legs together. This allows the call to have your Google Voice number's caller ID, yet take advantage of Google's long distance rates and other features. This is usually invisible to the user. However, during the call, you'll see it actually calling the gateway, if you look at the phone's display and see a different "shadow number" being called.
Outbound calls on an iPhone work similarly, except that Apple doesn't allow third-parties to hook into the iPhone dialer, so the app has its own keypad.
OBi devices are actually using the old Google Chat/Talk/XMPP protocol, hence those calls go over VoIP.
If you want to make calls on an Android or iPhone and NOT use your carrier's voice telephone network, then install Google Hangouts. Hangouts uses WiFi or 3G/4G data for calls.