/etc/init.d/solr status returns 0 if Solr is not running, but according to the LSB 0 means that the service is running (http://refspecs.linuxfoundation.org/LSB_4.1.0/LSB-Core-generic/LSB-Core-generic/iniscrptact.html).
In my situation this causes problems when managing the service with Puppet which uses the status command to determine if a service should be started. Puppet simply doesn't start the service because it thinks its already running. Any other script depending on the result of the status command will suffer similar problems.
Workaround for other Puppet users:
Setting hasstatus => false and pattern => "solr.solr.home" in the service definition works for me.