So, I asked this on the #libgdx IRC channel and got the following response:
Whereas you may be able to achieve a similar effect with both, they are very different things. SpriteCache is for cacheing sprite geometry on the gpu, allowing you to draw the cache, or elements of the cache without the costly upload to the gpu. All the geometry is still intact.
FrameBuffers are render targets, you render to them. You are limited by texture max sizes, and it only contains the texture information, it has no concept of what was rendered to it.
SpriteCache is great for when you have alots of static sprites that dont move, for example a tiled map layer.
FrameBuffers are good for rendering to texture at runtime, for example if you have a widget that is costly to create, but it doesn't change every frame, you can render it to a texture (framebuffer), and simply render that generated asset as a simple quad. Its also good for post processing, or deferred rendering paths.
[With a FrameBuffer] you lose the information about the sprites also, so if you had a special shader that did some fancy things with the geometry, you would lose your tile vertices