I don't think there's any reason to use the conversion context to allocate this memory, it's briefly used to build the host extension list and released right away.
All usages of conversion context and briefly used and released right away, I don't see how it's relevant. The main point of conversion context is for the caller to not need to worry about details of conversion memory management (and as a bonus, it should be more efficient). It was more important for generated conversion functions, where we previously needed to generate a set of function just to free converted structs. Still, if we have the infrastructure, why not use it here?
The MR adds somewhat unpleasant casts in `free` calls and performs memory allocations when they are not needed. Granted, it's not a big deal, but I don't see how it's an improvement.