If I set genre to a text that is not part of the ID3v1 genre list and then write an ID3v1 tag, the genre id in the file is set to 0. However, 0 means "Blues". So in effect eyeD3 turns any non-standard genre into "Blues", which seems not to be the best idea.
With other software I have seen as default:
12 (which means "Other")
255 (which is undefined)
I think either would be better than 0 and suggest to change the eyeD3 library accordingly. As far as I can see, it would be sufficient to change one line of method "_saveV1Tag" of class "Tag" in file "eye3D/src/eyed3/id3/tag.py":
[...] if not self.genre or self.genre.id is None: genre = 0 ### <<< change this value else: genre = self.genre.id tag += chr(genre & 0xff) [...]