Thanks for taking the time to construct an MWE. I think that constructor expects a closure (you can provide an initial inverse Hessian that depends on x), so something like
opt2 = optimize(func, Optim.minimizer(opt1),
BFGS(initial_invH = _ -> opt1.trace[end].metadata["~inv(H)"]),
Optim.Options(show_trace = true) )
would work (note the _ ->).