If you want to keep the sight model accurate see this thread
http://forum.shrapnelgames.com/showthread.php?t=48739
Though since posting there have played & looked so would say the game makes the following assumptions.
All buildings are multistorey as in 2 levels based on the fact all trees are slightly lower than it.
This is based on the fact that units one level higher than the obstacle can see over trees to other units at the same level while the building blocks that LOS.
The building is only fractionaly higher than the level as if you go up half a level (on a slope) the LOS over it is clear.
The game uses this model to determine LOS & the generation of blind hexes.
Deciding what a hill level represents depends on the map your creating then if you want to try & get it right.
Normal case assume its building roof top height but if large wooded areas assume its just taller than the trees, there are no old tall trees in the game.
Kind of a shame higher old trees virtually impassable to vehicles would spice things up a bit in place of say one of the several pavement designs. Course thats the easy bit the map generator & AI would have to be able to use them.