In PG version 16.6.1.pgdg24.04+1 on Ubuntu:
CREATE TABLE xxx (a int, b int, PRIMARY KEY (a)) TABLESPACE xyz;
will store the table's base storage in xyz, but will store the table's PRIMARY KEY storage in pg_default.
This seems a weird behavior and caused a load of a six billion row table to crash as the / partition unexpectedly ran out of space.
Workaround:
alter database abc set default_tablespace=xyz;
drop table xxx;
create table xxx;
will get all the data loaded to xxx - including the pk - stored in the location for xyz.