Hi Matt,
Quite a post there. Here are some thoughts to mull over too:
I've used the web service, and it is nice for most normal web-GP integration needs. It is however incredibly slow out of the box and needs to be customized to have speed. This means getting rid of all the extra overhead the service reference provides you. In one instance I simply rolled out the GP tables that I needed into objects, and mapped them using a code-first entity framework approach. This way, I could use select statements to my heart's content. This will be much faster for building something along the lines of reporting.
For pushing data, I used entity framework's direct SQL calls to the GP stored procedures to push data. This allowed me to use the objects I already have for mapping GP's tables to objects on one-to-one basis, keep GP's business logic by altering the stored procedures using eConnect's preferred method for custom business logic, and have it all wrapped up in one liner calls to the data layer.
The cool thing here is I can give this to anyone who knows how to write linq queries, and they can read through it for a basic understanding without knowing GP's obnoxious physical naming conventions. Here is an example class that I set up in my data context (repository link with some code). The neat thing too is you can write a simple script to map all the pertinent classes you need, and strip out the fields you don't for custom classes that pull from the same tables.
Now, the web service is cool for what it is, and there are a lot of predefined methods that make your life easier. For the most part, these are all built on the eConnect platform working behind the scenes as the engine. Depending on your needs, you can always roll out a more streamlined authentication system for example that hooks through your data connector and SQL. Considering GP uses SQL authentication, there is no reason why your custom web app cannot do the same. There are also limitations that require workarounds and customization which are annoyances at most, but these annoyances can be a time suck too when looking at development time.
I also am a big fan of the MVC framework over WCF. Not only do you get to use the pre-built web API which lets you roll out json, html direct, text, xml, whatever you want connectors, it is also easier to customize in my opinion. You can still keep the GP business logic intact by using eConnect as your primary integration source. You have the option of using Microsoft's libraries, or you can modify the existing stored procedures without breaking the GP business logic.
The question really comes down to what are you comfortable with?
Have fun on your journey, and let us know how things progress.