Cows only spawn on grass, even if they're coming from a mob spawner. You need to surround the spawner with a nice 9x9 field to get maximum output. If you still want water you'll have to elevate the streams on signs so that it will still push cows but the grass doesn't decay to dirt.
Science!
I scienced up some cow spawners to demonstrate this, and to test whether water streams were a viable transport method. You can see the initial results here:
As you can see, both the spawners on grass spawn cows, but the one on sand to the left has spawned no cows, despite being created first. Note that the top-right spawner is floating 1 block in the air and it's spawning cows just fine.
Apart from the need for grass and light, the normal spawner-block rules apply:
- Only air blocks 1 above, on the level with, and 1 below the spawner are valid spawn locations. (Note that the extra need to be on a grass block means that unlike other spawners, cows will not spawn in mid-air, so only 1 vertical layer of the normal 3 actually spawns cows.)
- Mobs spawn in an 8x8 area centred on the NW corner of the spawner block. (I've done 9x9 paddocks in the demonstration because I couldn't be bothered with the weird "centre" of spawner blocks.)
- The spawner will not generate any new mobs so long as there are any of the same type in a 17×9×17 area centred on the same corner of the spawner block.
Making a collection point
Testing showed that cows need two vertical transparent, non-fluid blocks above a grass block in order for it to be a legal spawn location. You have have the spanwer entirely enclosed an even dark, and cows will spawn so long as there is a two-block height clearance they can fit in. For whatever reason, fluids are the exception, so flows are hard to use for collection.
Dan Rasmussen's idea to use a piston to release water flows on a timer does work, and is more efficient than waiting for cows to fall into a water-flow moat. A long timer is necessary though, since if the grass is covered in water when the spawner "puffs", there will be no cow and that spawn opportunity is wasted. The tick also has to be long enough to shuttled any cows to your collection pit.
You'll notice I've made the grass paddock stepped – this is to allow the flow from one source block to continue all the way to the far corner. You can try different designs with multiple source blocks, or simply make the paddock smaller. The bottom-right of that picture is the collection pit.
The pit itself only has to be 10 blocks below the spawner to get the cows far enough away.
As a drop collection, they also take enough damage at 11 blocks to be one-hit kills. This design doesn't allow fast continuous spawning, but it's fast enough that you get cows faster than by breeding them, and with no effort apart from sitting AFK. I was getting a cow every five seconds or so with this design. Using an asymmetrical timer (so that the dry period is long enough to spawn all six cows, but the wet period is only long enough to push them all into the pit) might increase efficiency at the cost of complexity.