first of all there's a bit of confusion in the q - setting min/max runtime parameters will not prevent perm-gen errors ... you will likely need to increase memory a bit (depending on your application's footprint) as you're seeing those esp. if you're setting min/max values higher.
secondly - it will sure throttle concurrency but not that much - think of it as mongrel (thin) cluster: concurrent requests handled >= the number of running instances
a single runtime is blocked for the duration of a single request (does not depend at all on any session state), after the response is returned the runtime is returned to the pool and is ready to handle another requests. if a request comes in and there's no runtime in the pool it will try to wait for one to become available before returning a HTTP error (can be configured using jruby.runtime.acquire.timeout).
I would recommend to run or at least (integration) test with min = max since booting a runtime on demand might be costly (yet again this is application dependent) and at the same time it's harder to guess your memory requirement when you boot up a Rails instance on demand while serving. be aware that it might take a while to boot since your application needs loading on deploy min-times.