Its possible to get rid of the containing tag with a CompositeControl, but its working against the way CompositeControl likes to work (see below)
The proper way, apparently, to set TagKey to whatever the main tag of your control actually is (a div, table, or whatever).
Then override AddAttributesToRender() to set the attributes you want on your wrapper tag.
The stuff you want inside the wrapping tags should be rendered by overriding the RenderContents() method.
CompositeControl inherits from WebControl, see a discussion of the user of TagKey and AddAttributesToRender() here.
Someone on GeeksWithBlogs writes about a similar issue here
To just get rid of the wrapping though, see this forum post that shows a way to override the control constructor and the RenderBeginTag and RenderEndTag methods to remove the wrapping tags.