I asked on Twitter recently about when it made sense to set things like default figure width and height in the YAML of an RMarkdown document versus in the setup code chunk. @yihui helpfully responded with the following:
The YAML approach allows you to set options globally for a specific output format (e.g. html_document). The setup chunk approach sets chunk options globally for the document regardless of the output format (unless you set them conditionally, e.g. if (knitr::is_html_output()) set)
He asked me to post this here so others can find it, which I'm doing now. Hope it's helpful for others!