Assuming a widget to be a client UI widget, as most of our AppStore widgets are:
One of the biggest criteria right now if a feature can be a widget or should be build into the Modeler is how much it should integrate with the Modeler.
The API for linking a widget to something the Modeler can use is still limited. A widget only shows up in your form as a grey bar with the name in it, you can't right click it for fancy options and you can't see how it's gonna turn out (like you can with f.ex. a Datagrid).
The other part is integration with existing widgets (Either Mendix standard widgets or other Appstore widgets) and the Client. As the widget - Modeler link is still pretty basic, you can't build a widget that expands on the Templategrid, giving it new features for example. You would need to build a new widget that can either be put IN a template grid, or you'd have to build the Templategrid yourself anew and expand from there.
As far as Java and modules go, you would simply need to find out if it's possible. New features in the Modeler are usually very low-level. This way, it can be used in lots of ways and keeps it (and the Modeler itself) flexible and agile!
We encourage people to try to build it first, and create feature requests for the lower-level aspects that can't be done with the existing API's.