2.81 - Any way to have the grid show through objects?
There is no configuration option for this, but it's possible to patch the shader source code within the Blender binary, if you're brave enough.  The following works for 2.80, 2.81, and 2.82.  It doesn't work for 2.79, though.  Also I found that after applying this patch, there was a delay of several seconds the first time I ran the new binary, presumably as Blender recompiled all the shaders.  After that first delay, it should launch quickly again, but if you keep both binaries around and switch between them, there'll be a delay whenever you switch.

The shader source code lines you're looking for in the Blender binary are:

fade *= (scene_depth == 1.0) ? 1.0 : 0.0;


and:

fade *= 1.0 - clamp((grid_depth - scene_depth) * test_hardness, 0.0, 1.0);


The first makes the grid invisible behind objects in orthographic view.  The second does it in perspective view.  Both should be commented out.

If you have a hex/binary editor, you can do it manually.  The usual caveats for binary patching apply -- make a backup copy of your executable first, and change the lines to:

//de *= (scene_depth == 1.0) ? 1.0 : 0.0;
...
//de *= 1.0 - clamp((grid_depth - scene_depth) * test_hardness, 0.0, 1.0);


being exceedingly careful to keep the patch the same length as the original.

Alternatively, you can run the following Python script.  Note:  If you run this script from within Blender itself, it works fine, but it does nothing to the grid in the running copy of Blender.  It only patches and writes a new binary to implement the change.

Anyway, update the file paths to point to the input binary and an appropriate output file location.  If the patch is successful, you may be able to run the new binary directly, or you may find you need to move it into the same directory as the old binary (or even move the old binary out of the way and give the new binary exactly the same name as the old one), depending on how Blender is installed.

import os
import stat

# File names of input and output Blender executables
INFILE = "/scratch/buhr/blender/official_versions/blender-2.80-linux-glibc217-x86_64/blender"
OUTFILE = "/var/tmp/blender_gridinfront"

# Comment out these two shader lines
LINE1 = b"fade *= (scene_depth"
LINE2 = b"fade *= 1.0 - clamp((grid_depth"

def patch(data, line):
    i = data.index(line)
    data[i:(i+2)] = b"//"
    return data

with open(INFILE, "rb") as r, \
     open(OUTFILE, "wb") as w:
    data = bytearray(r.read())
    try:
        newdata = patch(data, LINE1)
        newdata = patch(newdata, LINE2)
        w.write(newdata)
        os.chmod(OUTFILE, stat.S_IREAD | stat.S_IWRITE | stat.S_IEXEC)
    except:
        print("Patch failed")
        raise