OK, I figured it out. ArcMap was failing to save rasters (it was trying to write to C:\Windows\System32\!), so I set up (as described in another forum topic on this site) a Windows environment variable ARCTMPDIR as C:\Windows\Temp\.
Here's how I figured out what was happening: When I opened up the SingleOutput interface (that says it succeeded but didn't), I replaced the .flt grids with an actual ESRI grid in the expression, and then I got some real errors:
Messages
Executing: SingleOutputMapAlgebra Int(SetNull(E:\NetMapData\app\elev_app EQ 0, E:\NetMapData\app\elev_app)) c:\temp\XSCXT #
Start Time: Thu Jun 13 10:28:32 2013
ERROR 010429: Error in GRID IO: CellLyrCreateInternal: Unable to create info directory for c:\windows\temp\ras649 .
ERROR 010302: Unable to create the output raster: C:\WINDOWS\TEMP\RAS649 Unable to create INFO directory C:\WINDOWS\TEMP\INFO
ERROR 010067: Error in executing grid expression.
Failed to execute (SingleOutputMapAlgebra).
Failed at Thu Jun 13 10:28:32 2013 (Elapsed Time: 0.00 seconds)
I looked in C:\Windows\Temp\ and it was full of hundreds of g_g### folders, and an info folder. I deleted everything in there, and then the next time I ran my code, a new info folder was created, and everything worked just fine. So, I guess the info folder was corrupt? I will now look for a way to purge that directory if needed, or perhaps on start-up of my add-in.
Hope this helps someone else with this kind of problem!