I believe I've figured this out. The key is that the AITile structure is effectively an image object - it contains data and information about that data. Thus, the slice within the AITile describes its data, and the slices passed to the ...RasterTile functions are relative to this.
In GetRasterTile, the parameters really ought to be named something like "srcArt", "srcSlice", "dstTile", and "dstSlice". The "srcSlice" ("artSlice") parameter describes which piece of the source object to copy, and the "dstSlice" ("workSlice") parameter describes which piece of the tile to copy it into.
In SetRasterTile, the parameters should be named "dstArt", "dstSlice", "srcTile", and "srcSlice". The "dstSlice" ("artSlice") parameter describes which piece of the object to copy the data into, and the "srcSlice" ("workSlice") parameter describes which piece of the tile to copy it out of.
In both cases, the slice within the tile describes the data contained by the tile. Thus, the "workSlice" parameter to these functions always needs to be a subset of workTile->bounds, and the "artSlice" parameter needs to be a subset of the raster art object's bounds.
Hope this helps somebody,
Aaron