The disadvantage of option A is that you haven't got a separate authoring environment.
* So say you've got a custom component that you want to deploy and you want to see what that would look like with live content on it on your authoring farm. In the case of just one web application it would be visible to your anonymous users right away as there is nog approval on custom development that's either deployed to the server or it isn't.
* Also, as soon as your content is approved it's live data. You can't setup a content deployment schedule as there is nothing to deploy your content to. It's already there. As soon as the content is approved it's available to anonymous users. And content will be approved per page. So if you were making a lot changes to your site and you want to launch the new content say July 1st that would be difficult. If you would be using 2 farms you could easily achieve that using a content deployment job that would deploy all approved changes to all pages at the same time.