I did some checking. Filters are defined as Sieve scripts inside the zimbraMailSieveScript parameter for each user (not present if there aren't any filters). So it could be as simple as coming up with the right value for this parameter and running a zmprov script to set its value. Beware that the parameter is not multi-valued and that you could end up removing your users' own filters if you're not careful.
As a test, I created a filter via the web interface and then did a zmprov getAccount to see what the output was:
Code:
[zimbra@demo ~]$ zmprov ga demo@example.net zimbraMailSieveScript
# name demo@example.net
zimbraMailSieveScript: require ["fileinto", "reject", "tag", "flag"];
# FILTER_NAME
if anyof (header :contains "subject" "CONTAINS") {
fileinto "DESTINATION";
stop;
}