A --list-tags would be a fine thing to have.
We were waiting on some refactoring to make some of the playbook parsing classes a bit more usable for that, though it actually might not be terribly difficult.
Really I want a way to compile a playbook down to a list of task objects w/o executing them.
Right now that doesn't quite fit for /usr/bin/ansible-playbook (the script) though so it needs a little bit of cleanup first.
Though I'll admit - Runner is our first target, so this may be a while.
I'd use the "specify an invalid tag" hack for now.