That is the way the unique validation works, The unique validation does not allow for blank value, so if the valuer is left blank both the unique and required validation will occur.
i guess you could add an if statement around the line for the unique validation so it will only be processed if there is a value:
if((isset($_POST["TestimonialCompany"])) && $_POST["TestimonialCompany"] != "") {
$WAFV_Errors .= WAValidateUnique("PowerCMSConnection",$PowerCMSConnection,$database_PowerCMSConnection,"testimonial","TestimonialID","none,none,NULL","0","TestimonialCompany","',none,''","".(((isset($_POST["TestimonialCompany"]))?$_POST["TestimonialCompany"]:"")) ."",true,2);
}