That's interesting. I've added FE before but never tried to parse through it. I would have thought it to be just an array of arrays with string[]. This works for me:
var fe = customrecord_subSearchObj.filterExpression;
// add the customer filter
fe.push('and');
fe.push(customerFilter);
// add the process date filters
fe.push('and');
fe.push(["custrecord_sub_process_date","within",startDate,endDate]);