Your decision should take into account the target platform and it's local norms. In order to best serve your users, you need to take into consideration all the other ways they use their devices, not just your app.
For example, on Android, all apps should have both horizontal and vertical layouts. As an app developer, you must consider that your software will be run by a variety of physical devices and users with different usage patterns. Some devices have physical keyboards that force either landscape or portrait mode. Even most soft keyboards have different modes for each orientation, and some users prefer one or the other for data entry. Even if one layout is less conducive for your specific application, you should still support it and seriously consider how to keep your usability high even when you can't control which way they hold their device. Even an inefficient use of screen space is better than looking at an app sideways!
Even if your app lends itself to one orientation or another, you must also consider the way other apps are used and hence the way the user may view your app as a speed bump if you don't support both layouts. One classic example is dialer apps on Android. Many of them, including the original stock one, did not support landscape orientation. However the original Android dev phone had a slide out keyboard, making the transition from any app that needed data entry to the touch dialer extraordinarily awkward. The issue continues today. Consider the case of a user using a navigation program in their car. The navigation experience is much better in landscape mode, so they have mounted their device in a holder horizontally on their dash. Then they need to make a quick call on speakerphone, so they switch over to the dialer. Even if you have designed a nice portrait layout for your dialer app, it is going to be frustrating for this user to be shown a sideways screen!
It is quite true that the best user experiences come from integrated hardware and software designs where the usage was taken into consideration seamlessly across both parts. However, not ever UX designer has the luxury of shipping their design on matching hardware. In the case of mobile app development, in order to create a good user experience you must consider that your designs will be used on a wide range of screens including different resolutions, aspect ratios, and orientations.
This is analogous to the switch from print to web layout -- replayed on a different stage. You must no longer design at the pixel level, you must design things that will be flexible!
There are exception cases. If your app is not a productivity app of any sort, then you can start to make exceptions. If you do not expect or what your app to fit into the normal daily usage of people's phones, then you can make an exception. This usually means immersive games with custom user interfaces can be excused from deigning for multiple layouts. If you want to limit people's usage to when they are giving their full attention to your game and draw them away from their regular usage (make them take their phone out of it's holder or mount, give their notifications a rest, etc) then the jolt of forcing a particular usage is easier to swallow. However, this should be the exception rather than the rule and be aware that it comes with disadvantages: people aren't going to switch to your app if they know it will inconvenience them.