If I remember correctly, although OSPF is classless itself, (Cisco) redistribution into OSPF.  The subnets parameter seems to assume classful networks.

For instance, under classful rules, 10.x.x.x is class A network (or /8 VLSM). 10.1.1.0/24, under classful rules is a subnet of the 10.x.x.x class A address. To have (Cisco) redistribute 10.1.1.0/24 into OSPF requires the subnets keyword. To have (Cisco) redistribute 10.0.0.0/8 into OSPF would not.

Usually when working with (Cisco) OSPF, you’ll want to use the subnets keyword when doing redistribution into OSPF.

If you wanted to redistribute 192.168.1.0/24 into OSPF, since, under class rules, it’s a class C address, you wouldn’t need the subnets parameter. However, 192.168.1.0/25, a class C subnet, you would need subnets parameter.

When working with VLSM/classless, you’ll want to use subnets parameter.)

This output shows an OSPF router redistributing static, RIP, IGRP, EIGRP, and IS-IS routes.

router ospf 1
network 131.108.0.0 0.0.255.255 area 0
redistribute static metric 200 subnets
redistribute rip metric 200 subnets
redistribute igrp 1 metric 100 subnets
redistribute eigrp 1 metric 100 subnets

When there is a major net that is subnetted, you need to use the keyword subnet to redistribute protocols into OSPF. Without this keyword, OSPF only redistributes major nets that are not subnetted.