Graphics cards have a limited amount of memory in which to hold texture data (typically between 16 & 128 megabytes).
Very long sequences of images, such as from captured video, can exceed that size.
In such a case, it's more efficient to create a single texture, and redefine it on the fly, than to create many textures in advance. When using this method, the image data for the texture is constantly downloaded from main memory to the graphics card, whenever the texture changes.
Call glTexImage2D to re-load a texture image, any time the target texture is bound.
Example: anim-falls.py
This can also be used to create entirely dynamic textures - ones that are not preloaded, but generated on the fly.