If you want to stretch the middle of the snake when it gets longer, it is easily done with a path. Constrain a number of small bones to the path, then move around the path handles to change the position and size of the snake.
Do you need the middle of the snake to use larger images rather than just stretch? If so you could use a path, as before, but have multiple meshes: one for each length of the snake. Chose which mesh is used depending on how far apart you position your path handles for the snake. You could also adjust the path constraint spacing property.