I agree with you.
Copying from first table to second is a wrong concept.
Actually, the first table is the "Primary" table and the rest of the table/tables are secondary.
Primary table is the one to which the routes will be installed if we don't have the rib-groups configured.
As you mentioned, rib-group configurations for static / direct routes might not need the Primary table configured correctly.
But, for OSPF , ISIS etc, you have to mention the Primary table first, otherwise it will give you an error when you commit.
R1# commit check
[edit protocols isis]
'rib-group'
rib-group test: Primary routing table should be inet.0
error: configuration check-out failed
Also, if you want to import routes selectively to secondary tables , you can configure "import-policy" with rib-group.
This import policy will be applied to the secondary tables , but not to the primary table.
( I couldn't find this fact in any Juniper documents. This is based on my several testing)
[edit routing-options]
rib-groups {
test {
import-rib [ inet.0 VPN-1.inet.0 ];
import-policy VPN1-import;
}
}