How can I set a default now() timestamp in a timestamp array?
You need to use the array[] syntax:

create table messages(
    id serial primary key,
    val text not null,
    testarray timestamp[] not null default array[now()]
);

insert into messages(val) values ('blah');

select * from messages;


http://sqlfiddle.com/#!17/c3a31/4