tokenat() is useful if you don't want to create a JSON or manually populate an array, with a text variable, it basically acts like the At command of a one-dimensional array.
I use it a lot, but I don't know if performance gets affected by it.
Yes, what you did with tokenat() reminded me of a simple array. Honestly, at first it seemed to be more complex in writing the syntax than using an array. But that's probably because I haven't seen it or tried it so I won't knock it until I try it. I could see it possibly coming in handy with text choices as well "yes/no/maybe", "save&quit/save&exit/exit".
Do you usually accompany it with another variable to track the index? If you use it and discard it in the event its unnecessary but it seems like in a lot of cases you would want to save the results somewhere, whether in global or instance variable.