I was not able to reproduce what you see. Probably because I have a slow computer. But on the other hand it seems that the SQL Server developers has built this with my slow computer in mind and not your fast one.

If I wrapped the insert and delete in a transaction they got the same start and en timestamp every time.

From [Temporal Tables][1]

> FOR SYSTEM_TIME filters out rows that have period of validity with
> zero duration (SysStartTime = SysEndTime). Those rows will be
> generated if you perform multiple updates on the same primary key
> within the same transaction. In that case, temporal querying surfaces
> only row versions before the transactions and ones that became actual
> after the transactions. If you need to include those rows in the
> analysis, query the history table directly.

So, if start and end timestamp are the same they assume it happened in the same transaction.


  [1]: https://msdn.microsoft.com/en-us/library/dn935015.aspx