Replying to my own question here. After a lot of digging.
It turns out the enum found in ModelerAPI::Material is incorrect. There are more material types than the ones listed in the enum (values 0..7).
The actual value types for materials are GDL types, as described here:
http://gdl.graphisoft.com/reference-guide/inline-attribute-definition
To wit, a material in a GDL script is defined as such:
DEFINE MATERIAL name type,
surface_red, surface_green, surface_blue
[, ambient_ce, diffuse_ce, specular_ce, transparent_ce,
shining, transparency_attenuation
[, specular_red, specular_green, specular_blue,
emission_red, emission_green, emission_blue, emission_att]]
[, fill_index [, fillcolor_index, texture_index]]
and where "n" is the number of parameters in the DEFINE MATERIAL command:
name: name of the surface.
type: type of the surface. The actual number (n) of parameters that define the surface is different, depending on the type.
The meaning of the parameters and their limits are explained in the examples’ comments.
0: general definition, n=16,
1: simple definition, n=9 (extra parameters are constants or calculated from given values),
2-7: predefined surface types, n=3.
The three values are the RGB components of the surface color. Other parameters are constants or calculated from the color.
2: matte,
3: metal,
4: plastic
5: glass,
6: glowing,
7: constant,
10: general definition with fill parameter, n=17,
11: simple definition with fill parameter, n=10,
12-17: predefined surface types with fill parameter, n=4,
20: general definition with fill, color index of fill and index of texture parameters, n=19,
21: simple definition with fill, color index of fill and index of texture parameters, n=12,
22-27: predefined surface types with fill, color index of fill and index of texture parameters, n=6.
20-27: Special meanings for types 20-27: If the pen number is zero, vectorial hatches will be generated with the active pen.
Zero value for a texture or fill index allows you to define surfaces without a vectorial hatch or texture.