I don't pretend to understand why this is the way it is, but check out how comments are set in the handy example file:
from eyed3.id3 import Tag
t = Tag()
t.comments.set(u"Gritty, yo!")
I believe this has to do with comments being placed into frames, but others may have to chime in with corrections on that. Note that this will fail unless you pass it unicode.
This works on version:
↪ eyeD3 --version
eyeD3 0.7.4-beta (C) Copyright 2002-2013 Travis Shirk