That is indeed a bit tricky to set up. Generally, things that should align need to share gridlayout column or row edges. So you cannot have two separate gridlayouts with Outside alignment.
One thing I could come up with now is two make the borders of the boxes using empty rows and columns that are simply shrunk to fixed sizes, which makes specifying the positions a bit more annoying as everything needs to be shifted accordingly. At least it looks good:
λ_color = :dodgerblue3
ϵ_color = :crimson
fig = Figure(size=(430, 0.85*430))
Label(fig[1, 1:3], "Liouvillian", tellwidth=false, tellheight=true)
Label(fig[1, 4:6], "Propagator", tellwidth=false, tellheight=true)
box_λ = Box(fig[2:5, 1:3, Makie.GridLayoutBase.Outer()], cornerradius = 10, color = (λ_color, 0.25), strokecolor = :transparent)
box_ϵ = Box(fig[2:5, 4:6, Makie.GridLayoutBase.Outer()], cornerradius = 10, color = (ϵ_color, 0.25), strokecolor = :transparent)
# move the boxes back so the Axis background polys are in front of them
Makie.translate!(box_λ.blockscene, 0, 0, -100)
Makie.translate!(box_ϵ.blockscene, 0, 0, -100)
ax_λ = Axis(fig[3, 2], ylabel=L"\mathrm{Im}(\lambda)")
ax_ϵ = Axis(fig[3, 5], ylabel=L"\mathrm{Im}(\epsilon)")
ax_λ_gap = Axis(fig[4, 2], xlabel=L"\frac{\mathrm{Re}(\lambda)}{2}", ylabel=L"\mathrm{Im}(\lambda)")
ax_ϵ_gap = Axis(fig[4, 5], xlabel=L"\mathrm{Re}(\epsilon)", ylabel=L"\mathrm{Im}(\epsilon)")
# --- Limits and aspect ratios ---
ylims!(ax_λ_gap, -100, 100)
xlims!(ax_ϵ_gap, 0.88, 1.01)
ylims!(ax_ϵ_gap, -0.25, 0.25)
rowgap!(fig.layout, 2)
colgap!(fig.layout, 5)
border_size = 10
rowsize!(fig.layout, 2, border_size)
rowsize!(fig.layout, 5, border_size)
colsize!(fig.layout, 1, border_size)
colsize!(fig.layout, 3, border_size)
colsize!(fig.layout, 4, border_size)
colsize!(fig.layout, 6, border_size)
# save(joinpath(@__DIR__, "figures/eigenvalues_sketch.pdf"), fig, pt_per_unit = 1)
fig
