The intermediate result is not necessarily written to disk when using the arcpy Spatial Analyst module arcpy.sa. Local (cell by cell) operators can be stacked up for deferred execution so nothing is executed until it is needed, and writing intermediate rasters is avoided when possible.
For example, this set of commands will only run at the end when saved, with no intermediate datasets saved to disk:
raster1 = Con(IsNull(mask+raster), 2)
raster2 = raster1 * 5
raster3 = raster2 / 2.0
raster3.save() # nested operation runs now
Note some local tools (notably, and unfortunately, Lookup) and all zonal and global tools always have to write a dataset to disk, to the current scratch folder. But even then, the arcpy.sa syntax allows you to succinctly do complex things with map algebra (in python, or using the raster calculator). In the following example, the SetNull and GreaterThan (>) local tools are run deferred, then a temp raster is written by EucDistance, then Pow and Divide will be run after that, without an intermediate raster needed (in theory of course):
raster1 = 1.0 / Pow(EucDistance(SetNull(landraster > 0, 1), 2)
(Note the clever way the Esri's Spatial Analyst team has figured out how make Python smart enough to realize that "/" means run the Divide tool if one or both operands are of type arcpy.Raster. Very cool.)
One trick you can use to speed things up is to set the current workspace and scratch workspace to the same folder (not gdb). Then a .save() operation only has to rename. This can make a difference with large raster datasets.
Another huge advantage (that Gabriel mentioned) is that temporary rasters are automatically deleted for you, making handling of temp rasters much easier in your code. Read up on the docs for the Raster object for more details on that.
Working with Raster objects—ArcGIS Help | ArcGIS for Desktop