Вы должны использовать нули, как вы сказали:
foo(null, null, null, 'bar');
Если вы не возражаете против создания большего количества функций, вы можете сделать что-то вроде этого, я думаю, что весь код будет более аккуратным.
function update_d($val){
foo(null, null, null, $val);
}
Или вы можете использовать массивы так:
$args = array($a = 'a', $b = 'b', $c = 'c', $d = 'd');
foo($args);