that's not quite true. A webcontrol is like a button, and you can build a designer for it so it does get rendered in the designer mode.
The main difference is that a webcontrol is an atomic unit. It's supposed to work just like all the other default server controls found in Visual Studio (including the designer mode). Additionally, it's built entirely in code, and stored in the DLL (i.e. there's no html side to it, and nothing's published to the website).
While a user control is a the .NET version of an ASP Include. There's a html snippet with it's corresponding code-behind page. There's an ASCX file that's pushed out to the website during publishing. An additional note, these are easier to develop than server controls.
Is one better than the other? That depends on what the goal is. But in general, if you're building something for other people/projects to utilize, go with a webcontrol. If you're building something for your own project's consumption then go with a user control.
Now, as far as JS is concerned, that's a harder thing to describe, and warrants a rather large discussion on its own. For server controls, you'll need to provide the hooks for the JS to get at the client ID for each of the internal controls. While a user control you can code the JS directly on the user control and access the controls the same way you would in an ASPX page.