Using SB is recommended for all portlets.
Primarily the reason for this is that you typically have multiple portlets sharing the data services. If you put them directly in the portlet, sharing becomes harder. Worst-case scenario is you have separate portlets, each with their own database connection, hibernate stuff (session factory, cache, etc.), retrieving and updating the same table... Gets to be a mess pretty quickly. It will work, but your runtime memory and resource usage goes up as a result.
The SB side of the house will use a single db connection (or a single pool of connections), single hibernate cache, etc. The portlets themselves just call the LocalServiceUtil guys to get the data they need.
Unfortunately on the SB side annotations are out. You must use the service.xml file and define your entities there (tweak the hints file for size information, add connection stuff to ext-spring.xml if you're not using the liferay database) and then build the services to create all of the various classes, and don't change the files that SB generates (except for the LocalServiceImpl classes where you can add your own methods).
Please sign in to flag this as inappropriate.