Puede capturar la salida estándar de esta manera:
from subprocess import Popen, PIPE
cmd = ['gdallocationinfo', '-geoloc', '-valonly', src, lng, lat]
p = Popen(cmd, stdout=PIPE)
p.wait()
val = p.stdout.read()
Investigué un poco más y encontré la respuesta a mi pregunta:
en lugar de usar os.system, la sintaxis correcta para almacenar el resultado en una variable es:
result = os.popen('gdallocationinfo -valonly -wgs84 %s %s' % (lyr, loc)).read()
Creo que tendrás que usar la sintaxis del subproceso, se explica en esta publicación:
subproceso para llamar a gdal desde python