It's working-as-designed behavior with regard to not being able to do what you have, but not perfect - it should report on the error condition.
There's currently no "notify" logic like you have attached to an include, and what is happening is the "include" "object" doesn't really have validation associated with it to the level that it should.
I'm not sure it should yell at you, as IMHO this should define variables:
- include: foo.yml x=2
is a thing
as such
- include: foo.yml
x: 2
should be a thing also.
As such, notify would just be another word.
Now if variables aren't taking in that case, that's a bug.
This is tricky, I know - but basically my advice in the past is, if you see syntax in the docs, it's syntax. But if you make something up, you might just be passing data to something :)
I hope this is understandable. It's somewhat the nature of it being a data format.
Now, if you want to "tag" every task in an include with a handler, that *may* be the first time I've seen that. It seems a little curious. Are there specific tasks you might want to affix a handler to instead?