Because the new or copied data has not yet been committed to the database, so any auto increment key fields etc are not available at that point.
So you either create a new master - commit it - and then open the record again to add the details (perhaps hide the detail blocks until a master key is known) - kind of what you are already describing above.
Or
You commit the master at creation time. You can do this by creating your own Add button and create and commit the master record with something like below (if MySQL), using a global variable to track the new ID:
$insert_sql = "INSERT INTO tblxxxx VALUES (NULL,1,1,1,1,0,NULL,NULL)"; // Enough defaults to create the record, but first col is NULL which in my case is the AI key field - so will auto create a new ID there
sc_exec_sql($insert_sql); // Run the SQL
sc_commit_trans(); // Commit the INSERT
sc_lookup(sc,"SELECT LAST_INSERT_ID()"); // Get newly genn'd Key
sc_redir(your_master_detail_form_name, NewID=$sc[0][0]); // Redirect to master/detail form using the global variable.
The source SQL for the master/detail form should then have in the “where condition” box:
xxxxxID=[NewID]