QNX predates the first L4 release by at least 10 years. Unless they had a major rewrite I wouldn't assume so.
The comment I was replying to seemed to imply that QNX 8.0 is a full rewrite. I'm not sure how relevant that statement was here, unless the rewrite is seL4 based.
Interestingly, QNX designers have learned and applied one of the same lessons as L4 designers: asynchronous messaging is messy regarding resource management and slower than well-executed synchronous messaging. QNX and L4 both use synchronous messaging for the vast majority of tasks.
I find it unfortunate, since I think async should be the default model for communication. Similar to message passing with shared memory as an optimization, I wonder if async messaging with sync messaging as an optimization is feasible. Async in general does make reasoning about the program more difficult.
My intuition is similar to yours, but I trust people who have done the thing more than your or my intuition.
Sync seems to require very responsive receivers, which is a desired property anyway, so maybe the downside isn't that great.
Mach (with Hurd) went down this rabbithole and utterly failed. Mailboxes were the cause of the desaster.