I'd prefer the builder. Mainly because there is no IDE support in macros, but also because I find macros hard to read. I think that macros are great and very useful, but only should be used if there is no realistic alternative.
You can use ..Default::default() to leave other fields at their defaults:
ServerOptions {
listener: TcpListener::bind("127.0.0.1:80").await?,
work,
check,
// All other fields use the default values defined in
// impl Default for ServerOptions { ... }
..ServerOptions::default()
}