Postgres: Insert result of join as an array?
You need to use a single insert statement:

INSERT INTO joined (id, name, regs)
SELECT u.id, u.name, array_agg(reg_id)
FROM users u
  JOIN regs r ON r.user_id = u.id
GROUP BY u.id, u.name;


Your two step approach requires an update as the second step, not an insert:

INSERT INTO joined (id, name)
SELECT id, name
FROM users;

update joined 
   set regs = t.regs
from (  
  select user_id, array_agg(reg_id) as regs
  from regs
  group by user_id
) t
where t.user_id = joined.id;