I could reproduce the phenomenon on Ubuntu 15.04 with the following crontab:

 * * * * * { echo job 0; } & sleep 5
 * * * * * { echo job 1; } &
 * * * * * { sleep 5; echo job 2; } &

I got mails from cron with `job 0` every minute, mails with `job 1` *occasionally* (5-6 times in last 10 minutes), no mails with `job 2`.

So it seems cron waits for the child process's exit, then send a mail with all stdout/stderr output it can slurp at that time. Delayed output from orphaned grandchild process is simply discarded.