The name clash is a potential problem with every user-defined action method name, because they're all in the same global namespace. Your best choice is to use an appropriately unique name. (The rules may have changed since Swift brought module-level namespacing, so it's probably only a problem within your app target, not frameworks any more.)
Alternatively, you can put the action method in your window controller, and target the window controller directly from your toolbar item. The window controller would then trampoline the action to the correct target. However, in this case, you would have to handle disabling of the item manually.
>> I still think it'd make sense to allow us to build a window controller in a storyboard that does not rely on a content view controller in certain situations
But you can and always could. Indeed, until fairly recently it wasn't usual to use a view controller at all (because they didn't use to be in the responder chain by default, so it was often easier to put the corresponding code in the window controller, which was). The main problem you're having in this case is that storyboards prevent cross-"scene" connections, and that makes long-established coding patterns harder to implement.
>> I moved this particularly window controller to its own nib file
I happen to think that putting window controllers in nib files is a terrible idea. Window controller should typically be instantiated rather than unarchived. If yours is not instantiated via a storyboard, then you can simply instantiate (alloc/init) it in code. The problem with a nib file is not that it doesn't work — it does — but that you lose control of the exact timing of instantiation, and this can get awkward.