I think it's important to point out why SHOWPLAN cannot be granted at the object level. The critical point is that views don't have plans! A view is not a query - it can be part of a query, but only queries have plans.
SELECT * FROM MyView may have a totally different plan from SELECT PrimaryKeyColumn FROM MyView. For instance, if there are any non-clustered indexes on the table, the later should pick the smallest non-clustered index and use that to dump out a list of PrimaryKeyColumn values because that results in less I/O than querying the clustered index.
As a result, it doesn't make sense to grant SHOWPLAN on a view - it only makes sense to grant it in the context of the as-of-yet unsubmitted query, which means the grant has to be at a broader level.