Note that the explanation is incorrect (at least for SQL 2016 and earlier, and most likely for SQL 2017 - the docs insist that the behavior changed after 2008 R2, but that is not correct). The deciding factor is not whether there are rows present in the table or not. The deciding factor is whether the table was truncated or simply had all rows deleted. Try running the exact same sequence, but instead of truncating the table, simply use DELETE FROM to remove all records. When truncating, Alice gets 0. When deleting all records, Alice gets 1.
To distinguish between those scenarios, use sys.identity_columns.last_value. If sys.identity_columns.last_value for the table is NULL, then RESEED with the value you want the first record to get. If sys.identity_columns.last_value for the table is not NULL, then reseed with the value one increment less than the value you want the first record to get.