The chance of Redis getting a blocking RPUSH/LPUSH if the destination list is too long, in my opinion, is close enough to zero to be considered measurement error. Why? Salvatore (the creator of Redis) recently released Disque [1], which is meant to be a highly-available queue system with many of the same semantics as the simple list-based queues that have been used in Redis for 5+ years (with additional options for 1+ execution semantics). And in particular, Disque will drop messages and return an error if the queue would grow beyond the user-provided maximum queue size as part of the ADDJOB call (see the MAXLEN argument).
Regarding whether or not it makes sense to block on RPUSH/LPUSH, I would say no. In roughly 100% of the cases that I've seen queues being used in practice (I am the author of a queueing library for Python + Redis, have used tasks/queues in the last 3 startups I've worked for, have advised several companies on the use/implementation of queues using Redis, ...), the only delay that you want to see is network latency and/or replication delay (to ensure that your task gets to replicas).
If you can drop queue items if your queues are too long, then drop the queue items. If you can't drop the queue items if your queues are too long, then make sure you have enough memory and add monitoring with alerts, or even monitoring that auto-scales up if your queues get too long.
- Josiah