Hmm. Seems to me that this actually relates well to the object-oriented versus functional programming "debate" - REST deals with things (like OO), RPC deals with actions (like functional).
But, in my experience, most requests consist of a "thing path" - host, resource; and then some "function" - get, update, other. POST is then the '=' - it's still a function under the hood, but because of it's commonality and interaction with language, the syntax is a little special.
In which case (and this is what I see in the APIs I most like) "the right thing to do" is to combine them, where you have pure REST when you're interacting with the object, but use RPC style when you're interacting with the object's actions.
Let's say I have some machinery exposed through an API, you might do:
GET host.com/machines/1 -> {"machine":"mixer","state":"off"}
POST host.com/machines/1?state:on -> 200
because I'm interacting with its state. But if I need to interact with its functional actions:
POST host.com/machines/1/mix?substance1=h20&substance2=c02
it makes more sense to phrase it as an action. "I want you to start doing this". You could also phrase as a request for a state transition:
POST host.com/machines/1?state:mixing&substance1=h20&substance2=c02
but (to me) that seems way weirder, generally.
I've got to go, but I think the answers change you go from physical resources to virtual ones, say, things that process information -
GET host.com/stock_analyzer/6/analyze?ticker=GOOG
where you might control state variables regarding the analysis algorithms using a REST-style.
Thoughts?