It's actually a bug that your workaround worked. When you add capabilities after publishing, it doesn't go through all the same checks and balances that the Analyzer performs when you publish or update the service. Feature Access capability is not supported when working with views.
I encountered this when attempting to publish a Feature Layer with a Query Layer, which is also not supported. In my case, I added Feature Access capability after publishing the service, and all was well until I later tried to update the service. (I did not need Feature Access capability for that particular layer so I resolved it by putting it in a separate service.)
For completeness I should mention that in 10.2 you can use Feature Access Capability with Query Layers. However, this is only supported if the query layer is referencing a table and not a view. That has to do with being able to support editing on enterprise spatial data even if it is not registered with the geodatabase, e.g. as a migration path for users of SDS.
(Keep in mind also that "technically working" and "officially supported" are two different things - if you had a query layer referencing a view with INSTEAD OF triggers and a unique ID field, I'm not sure if the analyzer would know the difference. I have not tried it. However, there would be no guarantee that it wouldn't cause data corruption or that a future service pack or update won't break it; best avoided.)