At first glance, it does seem counter-productive to allow a "remember this device" feature for two-factor authentication, however I can see why it would be useful, with relatively little impact to security1.
Firstly, any site that allows two-factor to be remembered for a particular device, is also likely to have a remember me function for those without 2FA enabled. In this case, the option to remember their 2FA details is no less secure than the user accounts who don't have 2FA enabled at all.
Secondly, the remember 2FA feature only applies to the current device that the user is using to log in with - it's not a global option. If they were to try and log in with another device, they would once again be prompted for their 2FA code. This means that if an attacker manages to obtain the username and password for a particular service (either through that service being compromised, or password re-use on a different compromised service), they will not be able to log in to the user's account unless they do it from a device that the user has previously used.
As a result, it appears that the security of the system does not get reduced by a user remembering their 2FA details the vast majority of the time. The only time it becomes an issue is when the attacker has access to a device that the user has previously used. However, having access to the device likely means they would also have access to the 2FA details anyway - a common phrase in security is if they have control of your device, you've already lost.
Normally, security comes at a cost of usability - the more secure something is, the less usable it becomes. However, we've already determined that there is little security risk to allowing 2FA details to be remembered, so we are able to relax things slightly to allow a better experience for the user.
This gain in usability is achieved by not requiring the user to enter the 2FA code every time they login. A typical scenario I see online these days (e.g. LastPass) are that the details are only remembered for 30 days, after which you are required to re-authenticate with your 2FA code once again. This then strikes a balance between security and usability, where a device is not perpetually remembered, however the user isn't having to re-authenticate every time they want to access the system.
Another strategy I have seen more and more in recent times, is allowing a user to see all of the devices on which they are currently logged in on. This feature then allows a user to logout of any/all devices, so if a device does get lost or stolen, they are able to revoke access from their account. This means that whoever has access to that device would have to re-login and re-authenticate using the 2FA details.
I'm not advocating that everyone should therefore remember their 2FA details on all services that they're able to. It becomes a trade-off of as to what is acceptable or not for each individual. It's likely that you wouldn't want to be remembering the details for your online banking accounts, and it's worth the reduction in usability to enter in your code every time for that additional security. However, for a social media account, the potential for harm if an attacker gained access is probably a lot lower, so that convenience of remembering the details may be worthwhile.
I've purposely left out details on the verification code itself, as I believe msp's answer is still valid today, and the Google Authenticator app (or similar) is the best way for 2FA to be implemented.
1. Disclaimer: I'm not a security expert, so there could be other potential security issues that I haven't thought of!