Shouldn't Blender free the GPU memory before rendering the next frame?
Might be a bug or a memory leak.

Blender does free unneeded memory as efficiently as it can, whoever it probably doesn't flush all memory when rendering an animation, as that would be highly inefficient.

There are immutable things that don't change between frames like geometry, materials, texture data, etc. and re-sending that unchanged data to the GPU every single frame would be a very big waste of time and resources and be very inefficient.

As such Blender tries it's best to be smart about it and keep as much relevant information in memory as it can. That being said memory management is probably a very hard task to do efficiently, and many times unneeded things are erroneously left behind. It's what I believe is called a memory leak (I'm not a programmer, I am hoping someone more enlightened in the matter than me will clarify or correct me here)

Over the course of rendering several frames those things build up and cause memory to reach it's limit.

That can probably be considered a bug and might be worth reporting to the tracker, I think. Although the chances of solving it are probably slim.

let's see what other have to say about it