Hi Kevin,
I'm not able to access your image services, so I'm not sure how much help I'll be, but there were a couple of things in your code that stuck out to me.
1. The Raster and Raster2 params in your functionArguments for suit are strings. They should be variables if you want to do map algebra between two rasters. Also, they're referring to the wrong variables. You're point to ImageServiceParamaters when they should be pointing to RasterFunctions. So instead of:
functionArguments_alge.Raster @= "params"; //these are ImageServiceParameters
functionArguments_alge.Raster2 = "params_land"; //and are strings, not variables
It should be:
functionArguments_alge.Raster = reclass_dem; //these should point to your
functionArguments_alge.Raster2 = reclass_landcover; //RasterFunction variables
The case where you'll see a string will probably be when using the original raster which is referenced like this: "$$". Or a constant:
functionArguments_alge.Raster = "$$"; //this would use the values in the original raster
functionArguments_alge.Raster2 = "100"; //and multiply/add/whatever the cells by 100
2. I'm not an expert on the Arithmetic function, but I don't think you would apply it to both layers as you do here:
var dem = new ArcGISImageServiceLayer("http://indian.geo.msu.edu:6080/arcgis/rest/services/Piraino/dem_un8/ImageServer",{imageServiceParameters:params_suit});
var landcov = new ArcGISImageServiceLayer("http://indian.geo.msu.edu:6080/arcgis/rest/services/Piraino/Landcover/ImageServer", {imageServiceParameters:params_suit});
Try only applying it to just one of them.
3. Also, try experimenting with the ExtentType and CellsizeType functionArguments for Arithmetic. If you have different cell sizes, that perhaps could be giving you issues? I would also play around with the outputPixelType as well...
Sorry I can't see your services, but that's the process I would go through. Maybe someone who's used this function can jump in and give a more authoritative answer.