Вы объединяете разделители и флаги, которые не работают.
Попробуйте:
$p1 = '(?i:^[0-9]{8}[A-Z]$)';
$p2 = '(?i:^[XYZ][0-9]{7}[A-Z]$)';
$this->setValidators(array(
...
'field_1' => new sfValidatorRegex(
array('pattern' => "/$p1|$p2/")),
Также в вашем случае вы можете просто использовать шаблон как:
$re = '/^[XYZ0-9][0-9]{7}[A-Z]$/i';