I think the 250 files all containing just "foo" are stored as a single blob, too, even before creating a packfile.

I forgot about that, delta compression still can save quite a bit when you have nearly-identical files.

Exactly, a tiny change in a large file produces a full new blob, but is stored very efficiently as a delta in a packfile.