Following Tom Sharpe's suggestion from comments, I was able to build upon Creating Datavalidation with custom Formula to achieve both of my requirements:
var criteria = SpreadsheetApp.DataValidationCriteria.DATE_ON_OR_BEFORE;
var args = ["=TODAY()"];
var val = SpreadsheetApp.newDataValidation().withCriteria(criteria,args);
This gives me both dynamic check that uses "today()" as date, and date picker for input.