Is there a way to programmatically add questions to a webform grid?
Sure enough there is a way, a very neat one, just found it out myself!

In the following example I use a View's result to get the list of nodes I will use as the questions in the webform grid. This allows even easier management of the questions you want to display in your grid, by setting for example specific filters on your view.

You need to implement the hook_webform_component_render_alter hook. Here is the code you need:

function yourmodule_webform_component_render_alter (&amp;$element, &amp;$component) {
  // Select the right webform component
  if( $element['#type'] == 'webform_grid' &amp;&amp; 
      $element['#title'] == 'Title of Webform Component' ) {

    // Override the title of the grid component
    $element['#title'] = "Node Title";
    // and use it as the label of the questions' column
    $element['#title_display'] = "internal";
    $new_grid_questions = array();
    // This is a standard content view that contains at least a nid and a node title field
    foreach( views_get_view_result('my_view', 'my_display') as $res ) {
      $new_grid_questions[$res-&gt;nid] = $res-&gt;node_title;
    }
    $element['#grid_questions'] = $new_grid_questions;
  }
}


And here is a screenshot of the end result:



Hope this helps!