La función Max te devuelve un solo valor, con lo que no hacen falta agrupaciones, otra cosa es que tengas varias fechas iguales máximas, con lo que primero tienes que sacar el máximo y luego agrupar...
Código SQL
[-]
Select i.cod_insumo, i.descripcion, tasa_gcia, lp.fecha_ini
From Insumos i LEFT OUTER JOIN Listas_Precios lp ON i.cod_insumo = i.cod_insumo
Where (i.cod_proveedor = 2) and (i.estado = 'A') and (lp.fecha_ini in
(select max(lp.fecha_ini) as maximafx
from listaprecios lp
Where lp.fecha_ini <= current_date))
group by i.cod_insumo, i.descripcion, tasa_gcia, lp.fecha_ini