Andy,
As I just saw your contribution to the addons: r.cell.area [1], please all note that 10 months ago MarkusM has implemented an area() function in r.mapcalc [2]. This is currently only available in trunk, but will thus be in GRASS GIS 7.4. This uses internal library functions which calculate area of the pixel taking into account the current projection system.
Moritz
[1] https://trac.osgeo.org/grass/changeset/71487
[2] https://trac.osgeo.org/grass/changeset/69962/grass/trunk/raster/r.mapcalc