Of course you can always use an intermediate file, the point is that sponge is a very convenient way to just do it in a single command, without having to use intermediate files.
You don't have to use pipes either, you know. You can just save the output from every command to an intermediate file, then run the next command with that file as input.