Hm, interesting. Just some thoughts of mine. Could be crap xD
I just thought about a list, where every element knows the one infront and behind him.
So you would make every element of the snake in the same BP but inside the BP you decide what part of the snake it is by looking into the list. Every part that has someone in front and behind is a body part and head/tail dont have someone in front /behind.
Also inside the BP i would make a case for body and tail to follow the one infront. So the tail isnt following the head, but the “guy” infront of him, And that guy is following the one infront etc.
A list like that could be done with 3 arrays. One array for the body part, one array for the infront and one array for the behind one. They don’t need to be in the right order of 0 - n, because you can always add the part somewhere inside that array and just tell them what there next part is. They only need to share the same index. A body with it’s infront and behind guy would be saved for example to index 7. In all 3 arrays the same index!
For your snake it would be stack like, so it’s not that hard. If you add one, you just look what the tail is, set the tails behind guy to the new one and the new ones infront guy to the old tail.
If you change the model depending on the “do i have someone behind me” it would change the model as soon as a new tail is generated.