Why do function inputs need an extra set on parens in this Postgres function?
You need the extra parentheses because your function epochseconds() is defined to accept a single value, a select returns a set of rows, the parentheses indicated that the select only returns a single row and column (a scalar value). 

But there is no need for that, just pass the max value directly to the function:

create function tablerowepochseconds(integer) returns int as $$
  select epochseconds(max(baz.created))
  from baz 
  where baz.id = $1;
$$ language sql;