Would a sequence provide any performance gains over SELECT MAX(id)?
SELECT MAX(id)+1; is incorrect, will not work under even mild concurrency as multiple processes will find the same MAX and then attempt to insert the same next value.

A SEQUENCE is correct, so by definition better, but not necessarily the best. It should be used as a DEFAULT constraint on the column. 

By far simplest solution is to simply use an IDENTITY column.