Serializing an array (either with the serialize function or converting the array to JSON) will allow you to store the whole array in one database field. As you say, you may need separate database fields depending on what you’re doing. If you ever need to query, search or sort the data, then you need separate fields. If all you ever intend to do is to export the data to a csv, then maybe storing everything in one field is ok. You can unserialize the data in php, and generate your csv rows pretty easily. This also gives you the flexibility to change your data model without changing the database.
If you need separate db fields, and you’re up to learning xPDO and modeling each of your forms, then your form capture code can become really simple.
$myForm = $xpdo->newObject('myForm');
$myForm->fromArray($_POST);
$myForm->save();
http://rtfm.modx.com/display/xPDO20/Home
(Yes, you can include xPDO and use it in Evo snippets.)
If xPDO’s too much to learn for your immediate needs, then I’m not sure what to recommend. You need some sort of system to map your arrays to database queries. You could roll one yourself, or look for a php script out in the wild, or use xPDO.