A BOM is typically used only when there is no other external information about the string's encoding. Makes sense for text files, the data has to be self-describing, but not so much for transmission protocols unless there is no other encoding information available, like the Content-Type
header in HTTP, the <meta>
tag for HTML, hard-coded by protocol specs or protocol extensions, etc.
For simply storing a string in memory, a BOM is useless if you are tracking the string properly. Also, depending on the particular string type you are actually using, an empty string may or may not be implemented as a NULL pointer, so you might not be able to include a BOM anyway.
And no, there is no RFC about general BOM usage.