I haven't used it much but from my understanding you must first setup MVC 3's WebGrid before using it. And you don't want to setup the table in the view but instead do it using model attributes.
If I where to do that I would do the following:
Create my custom attributes with which I would decorate my model to define which properties are columns, what labels will be used for column header and anything else you want to configure.
I will make a static class with a static method that takes in your model instance, uses reflection to read the properties and your custom attributes and from there it will spit out the WebGrid for you to use in your view.
That's the how but I'll tell you why I wouldn't do this: in MVC you decorate your model for things like validation and that is great and declarative. But when you define a grid, this is a very view specific thing. Sure you may be using the ViewModels which are view specific but I don't think table layout configuration belongs in the model. The way WebGrid or Telerik's Grid before it work is already nicely declarative already.
I short WebGrid and Telerik's Grid are already using best practices by offering declarative, fluent interfaces to define table structure and behaviour. Each table is different so it makes sense you are defining each table. You say "by hand" but this is far from the case as the Grids are doing all the dirty work for you, you are just telling it what you want (declarative programming).