It would be helpful to replicate the behavior of llCollisionFilter as a parameter to llRezObjectWithParams so that objects can take advantage of that collision filter behavior without requiring a script.
A typical use case here is dual guns. Both rez the same bullet object with the same name, and these bullets all occupy the same space in front of the user when fired, typically with some randomized rotation added (a.k.a. spread), so collisions between bullets fired by separate guns can happen. However, these guns are two different objects, so the flag REZ_FLAG_NO_COLLIDE_FAMILY doesn't help. This is not an issue for old-style scripted bullets, which can use llCollisionFilter("bullet", NULL_KEY, FALSE) to avoid colliding with bullets from the other gun. However, having to use scripted bullets to regain this capability defeats the purpose that llRezObjectWithParams was designed for.
All types of collision modifications would operate independently from each other. That is, setting
REZ_FLAGS, REZ_FLAG_NO_COLLIDE_OWNER | REZ_FLAG_NO_COLLIDE_FAMILY,
REZ_COLLISION_FILTER, "bullet", NULL_KEY, FALSE
would result is preventing collision with the owner, any other object rezzed by that object, and also any object named "bullet".
I thought it would be most flexible to replicate all the parameters to llCollisionFilter, although filtering by a specified UUID isn't particularly useful for the specific use case I described.
Simplified example use:
list rez_params = [REZ_FLAGS, REZ_FLAG_NO_COLLIDE_OWNER | REZ_FLAG_NO_COLLIDE_FAMILY,
REZ_COLLISION_FILTER, "bullet", NULL_KEY, FALSE];
llRezObjectWithParams("bullet", rez_params);