I don't know which sort it's modeling, but it looks like an out-of-place sort.
In terms of how it works, a frog (counter) is added to all of the boxes (indices) at once. Each of them are incremented simultaneously, and then checked against the value stored in that index (it takes longer for a frog to eat 5 flies than 4 flies). When a counter's value is equivalent to the key value of the item in that index, it is appended to the list, so that you end up with a list in ascending order.
Sounds more like a "sleep sort" to me - a semi-joke algorithm where you tell a thread to sleep for n seconds, then print n. Though instead of multithreading, you get multifrogging.
In terms of how it works, a frog (counter) is added to all of the boxes (indices) at once. Each of them are incremented simultaneously, and then checked against the value stored in that index (it takes longer for a frog to eat 5 flies than 4 flies). When a counter's value is equivalent to the key value of the item in that index, it is appended to the list, so that you end up with a list in ascending order.