In the future, we'd like to find a way to control which USB libraries / classes / capabilities are loaded in a sketch. In particular, we'd like to avoid loading the HID (mouse and keyboard) support if you don't use it - allowing for other USB classes on those endpoints. Currently, there's a Mouse.begin() and Keyboard.begin() function; ideally, if you didn't call those, the Mouse and Keyboard classes wouldn't be loaded (avoided both the flash and endpoint usage). The hope is to change the core in the future to work that way. We try to avoid using preferences in the boards.txt file to control things that aren't actually related to the board (otherwise, the number of boards needed would expand exponentially as you added preferences).
As you say, CDC is used for the auto-reset, so we might not disable that by default.