Not sure if this was changed recently in the documentation, but it seems like this is by design:
https://developer.apple.com/documentation/corebluetooth/cbperipheralmanager says:
In watchOS, tvOS, and visionOS, you can’t advertise services using a CBPeripheralManager object because support for doing so is unavailable.
Looks like visionOS can only act as the central, or at the very least, cannot advertise services. I'm wondering if there is any way to work around this; I think advertising a service and acting as a peripheral are two orthogonal things, so if visionOS can act as a peripheral but just not advertise, I wonder if I can cobble together some odd solution.
At any rate, this was 'solved' with new hardware.