I hope you could bear with me in the next few lines. I don't agree with the naming conventions you have provided. Data Modeling has a purpose of making us think in more detail about the business and not only generate DDLs. If we use the effort and time spent in constructing the model to learn more about the business we could gain a lot. Now you say:
A user can (have) multiple widgets and a widget can be owned by multiple users.
To me, using the word have is not in fully in sync. with the word owned.
If you insist on the part "a widget can be owned by...", you need to say a "a user could own 0,1 or more widgets". This is to make it clear that we are dealing with 1 association (or relationship) in both directions.
Analyzing this further, what does it mean to say "a user owns a widget"? It is not very clear to everyone. Did the ownership occur as a result of a buying process? (as in: user buys a widget) or a granting process? (as in privilege granting)? If the ownership occurred due to a buying process, then the intersection table between the widget and the user is the table capturing the buying history (or buying details) of the user.
Now you can decide if you want to use a descriptive name such as "UserPurchaseDetail" (a better name is suggested below by @Joel Brown) or only use a name like UserWidget.
Again, whatever your choice of the name is, my point is that one should always strive to do more analysis and use a name that reflects what is the table used for in business terms as much as possible.
Edit - Added name suggested by the note below as an alternative name.