The evaluation functions for chess usually includes chess specific knowledge. However, Zillions of Games is able to play any game based only on a description of how the pieces move and winning/losing/draw conditions. And as I see, does quite a good job.
Engines like Fairy-Max can only play chess-like games, which includes many assumptions in its design that do not need to be generalised. But when making a generic game engine (which I dream of doing), the engine simply can't assume almost anything.
I got a nudge in the right direction with the post 'ab-initio' piece values on TalkChess. Yet it does not provide the whole picture.
So, how do generic game engines (like Axiom Development Kit, which is an independent engine that plugs into Zillions; or even the very Fairy-Max) evaluate position?
Edit 1: I found some more information in the 1993 paper by Barney Pell entitled A Strategic Metagame Player for General Chess-Like Games (found it from the "General Game Playing" page on chessprogramming.org).