How would I procedurally texture a marble tile floor without the texture spreading across every tile?
One way of doing this would be:

Separate all your tiles as a single object so you can use the Object info node random output in order the create a tile black and white mask:



You can then create another wave texture and combine it with the one you already have using the tile mask as factor:



You obviously need to change the texture coordinate of the second wave to create variation. Put a color ramp node and play with its value to have stronger difference:



http://pasteall.org/blend/index.php?id=50740

As @robin betts points out in the comments, if you need to keep the array modifier you can duplicate the object, do the same process, and bake the mask into a file image. Or if you want to keep a "semi" procedural creation use dupliface instead of the array.