The benefits to hiding the definition are that you can change its definition on a whim and not let the API consumer worry about it.  For example, if I decided to introduce another constant that I felt deserved the definition `CFIDictaphonicWindowCanStartDictation` more than the current one, I can just change the definition of the symbol and the users would be none the wiser.  I also tried to keep the implementation down to one file.  Normally, I'd encourage exactly what you said about moving stuff into the Prefix header, or making a new constants-only header, but this is a very unique kind of corner-case control.