I might be missing something, or something has changed since last year, but for building universal binaries when resolving dependencies with vcpkg it is enough to pass both architectures to VCPKG_OSX_ARCHITECTURES in the triplet (so you might want to create a custom triplet for that):
set(VCPKG_TARGET_ARCHITECTURE arm64)
set(VCPKG_CRT_LINKAGE dynamic)
set(VCPKG_LIBRARY_LINKAGE static)
set(VCPKG_CMAKE_SYSTEM_NAME Darwin)
set(VCPKG_OSX_ARCHITECTURES "arm64;x86_64")
With zstd as an example:
$ lipo -info ./libzstd.a
Architectures in the fat file: ./libzstd.a are: x86_64 arm64