The @RequiresFormat annotation is used by the parseRichTextMacroBody() method in the StorageMacroV2Unmarshaller, to override the default behaviour of processing the macro body before calling the macro's execute() method.
This is used by the cache macro (among others) to get an unprocessed copy of the macro body, and use a cached result rather than evaluating the macro body.
This works fine for normal page rendering, but it doesn't work correctly when rendering macro previews in the macro editor. This is because the macro preview is done through a completely separate code path to the one which renders the macro normally – in MacroResource.generatePreview() in the editor plugin.
We should make the behaviour of the MacroResource.generatePreview() method the same as the StorageMacroV2Unmarshaller with regard to the @RequiresFormat annotation.