Functionally A records and CNAME's are the same, except for mail servers which are required to have an A record according to the standard. A records and CNAME's work at the DNS level where the domain name is translated to the IP address. The A record is a direct translation from a domainname to an IP address. A CNAME is an alias. In the latter case the domainname (www.widgets.com) is first translated to another name (www.widget.com) and after that translated to an IP address. The A record method is faster than the CNAME, especially when both domainnames are on different DNS servers, because the visitor has one less DNS request to do.
When you do one of the two above, you must be sure that your webserver which is now serving www.widget.com is actually recognizing the www.widgets.com name. If the webserver is not configured to accept www.widgets.com requests, it will refuse connections for this domainname and not forward it to your current domain. You should contact your current hosting company, of change the settings in your webserver software directly if you have access to them. After that you have to make a 301 redirection on your site from widgets.com to widget.com to prevent duplicate content.
Concluding: setting the A or CNAME directly to your current host and adding a 301 redirect is preferred, but only if you are able to alter the configuration of your current webserver to recognize requests for www.widgets.com.
The other two methods registrars provide are full size frames and 301/302 redirects. If the registrar has a method to redirect requests from a specific domain to another domain with a 301 redirect, this is the way to go. Google will recognize this type of redirect correctly. The other two options: full size frames and 302 redirects are bad in terms of Google.
If you are in doubt how your registrar has implemented "web forwarding", or "web cloaking", the best way is to set it up and use a server header checker to see how a request to www.widgets.com is handled. You should see a "301 Moved Permanently" somewhere in the header. If not, don't use it.
The nice thing is that WebmasterWorld provides a header checker at [webmasterworld.com...]