A record in the Layout's found set cannot be listed twice, so I think your related table is the way to go. Once your related table is properly populated with records, you can base your report layout on this new table and then a given job can be listed in more than one place on your report.
I will assume that your table is named Jobs and that it as an auto-entered serial number (or Get ( UUID ) ) field named __pkJobID. We can thus set up this relationship to the new table:
Jobs::__pkJobID = JobDates::_fkJobID
See this thread if my notation is not familiar to you: Common Forum Relationship and Field Notations Explained
You need just one more field in JobDates: JobDate, a date field for storing a single date.
You'll need to use a script that loops from Jobs::StartDate to Jobs::EndDate, creating one record in JobDates for each date in that range. For new Jobs, you can set up script triggers to perform this script whenever Jobs::EndDate gets a new value or each time a Jobs record is committed. For existing records, the same script can be performed from inside a looping script that loops through all your jobs records to do a "one time fix".
#Perform this script from a layout based on Jobs
SetVariable [$Start ; value: jobs::Startdate ]
SetVariable [$End ; value: Jobs::EndDate ]
SetVariable [$ID ; value: Jobs::__pkJobID]
IF [ IsEmpty ( Jobdates::_fkJobID ) ]
Go to Layout [ "JobDates" ( jobdates ) ]
Go To Related Record [Show only related records; From table: jobdates ; Using layout: "jobdates" (jobdates) ]
Delete All Records [No dialog]
Exit Loop If [$Start > $End ]
Set Field [JobDates::_fkJobID ; $ID ]
Set Field [JobDates::JobDate ; $Start ]
Set Variable [$Start ; Value: $Start + 1 ]
Go To Layout [Original Layout]