Like most people using GTD these days, I did question at least certain contexts, like @computer, when I'm basically at a computer most of the time (including a smartphone).
But as others have said, one value can be in batching tasks. @phone, for example, works for me because even though I'm at a phone (desk or cellphone) pretty much all day, I may have downtime where I want to sort all next actions by @phone, and then do a whole bunch at once (thus advancing the progress of many different projects in one shot). Conversely, even though I have a phone within reach at all times, I may not want to use it for hours, as I'm focusing on other things.
Also, I have to disagree on the agenda context. It all depends on your situation. I'm a manager of 11 people, and have kids. Including my boss, that is over a dozen people who I must catch up with on a regular basis on specific projects or questions. It's absolutely critical for my job, and often for home life, to maintain active @agenda lists. If agenda lists don't work for you, then don't use them. But it doesn't mean agenda lists have no value on an absolute basis.
Another way I look at contexts (and I'm not the first to say this), is to look at the contexts I actually am in during the day, rather than try to follow a pre-packaged set of contexts. So that led me to create an @commute context, as I'm on the train for a set amount of time each day. And there may be certain things I want to do during that time (like read, catch up on work email, or think through something).
I pretty much have dropped the @computer and @errands contexts, as they are too general for me. I keep a "Grocery list", with no context or other info, as I know to just go to it when I'm shopping for groceries. I also keep a Household Items list for stuff I need from the hardware store or similar, and where the grocery store doesn't have those items.
Good topic to bring up, and I'm finding the comments very interesting.