What is more power efficient: GPRS or SMS for a GSM sim Arduino application?
Looking at it logically SMS is probably the most power efficient method.

The thinking is this:

With SMS:


The shield sits there connected to the mobile network doing nothing much
An SMS is sent by you which travels through the mobile network
The SMS is sent from the mobile network to your GSM shield which then wakes up and does things with it
The shield sits there connected to the mobile network doing nothing much


With GPRS:


The shield queries an on-line service to see if a request is available
The shield queries an on-line service to see if a request is available
The shield queries an on-line service to see if a request is available
The shield queries an on-line service to see if a request is available
The shield queries an on-line service to see if a request is available
The shield queries an on-line service to see if a request is available
The shield queries an on-line service and sees a request is available
The shield downloads the request
The shield acts on the request
The shield goes back to querying the on-line service
The shield queries an on-line service to see if a request is available
The shield queries an on-line service to see if a request is available
The shield queries an on-line service to see if a request is available
... etc ad nausium ...


As you can see with SMS the onus is on the mobile network to send the data to the shield, whereas with GPRS the onus is on the shield to keep querying an on-line service to see if there is any requests to handle. There is no way of you sending data to the shield directly (indeed, most GPRS services include at least one layer of NAT gatewaying). So your shield has to be active all the time and constantly looking at something online - not only power hungry, but potentially financially expensive too.