In my opinion, this would be an unnecessarily complex origami of layers to achieve something that a single Python layer would in a couple lines of code.
Let's see... you need pooling to get max(), then a dummy data, eltwise and another pooling to get min() - Caffe does not support min pooling directly, afaik, so you need to work around that by negating a copy of the blob. This is already 4 layers to only get the min&max, and there's still a fairly complex equation to build, with 5 operations (3 subtractions, sqr and division) and another constant. Unless I fail to see a simpler way to do that using layers, that's a huge hassle. Worst of all, if he finds that his normalization works poorly and decides to change it... redesigning this using layers will give him another headache, while changing an existing Python layer will take a minute ;)