But is there any larger reason to put the second void in there in the definition or declaration?
The void in the parentheses after the function name says that you have thought about the list of arguments, and have decided that there are none, so you are explicitly telling the compiler that.
The empty set of parentheses implicitly says that there are no arguments. The resulting object module is exactly the same.