Because these rules have a cost, and sometimes the cost is not worth it for non-safety critical code. It would be a PITA for general purpose code to avoid all dynamic memory allocation.
Giving all loops a fixed upper bound comes at a cost to code readability (consider the example of traversing a linked list, as given in the article).