If you don't cap the size, the Queue can grow until you run out of memory. So no size limit is imposed by Python, but your machine still has finite resources.
In some applications (probably most), the programmer knows memory consumption can't become a problem, due to the specific character of their application.
But if, e.g., you have producers that "run forever", and consumers that run much slower than producers, capping the size is essential to avoid unbounded memory demands.
As to deadlocks, it's highly unlikely that the implementation of Queue is responsible for a deadlock regardless of whether the Queue's size is bounded; far more likely that deadlocks are due to flaws in application code. For example, picture a producer that fetches things over a network, and mistakenly suppresses errors when the network connection is broken. Then the producer can fail to produce any new items, and so a consumer will eventually block forever waiting for something new to show up on the Queue. That "looks like" deadlock, but the cause really has nothing to do with Queue.