I have done some fairly extensive tests on the string splitting options and the JSON split methods and the STRING_SPLIT functions are by far the best performers if one is on 2016 or later, by far!
Encapsulating the output in a CTE with a ROW_NUMBER has proven to be accurate and consistent when it comes to the item's ordinals, hence my recommendation.
😎Hopefully I will find the time to do a write-up soon
Eirikur, Wayne Sheffield has done some testing and has a good article at http://www.sqlservercentral.com/articles/STRING_SPLIT/139338/. He covers quite a few different scenarios in the data. It didn't include DelimitedSplit8K_LEAD and I know you're very familiar with it - it's yours. 😉