You are changing your actual game object instead of the radius object that you have pooled. So when the Z key is released, you are deactivating your game object and then no further processing is done.
Also you actually don't need a list, since you are using one object only. So this can be simplified a lot:
float speed = 2f;
public GameObject radiusPrefab;
// your "pooled" instance.
private GameObject instance;
void Start(){
instance = (GameObject)Instantiate (radiusPrefab);
instance.SetActive(false);
}
void Update (){
if(Input.GetKeyDown(KeyCode.Z))
{
instance.SetActive(true);
}
if (Input.GetKey(KeyCode.Z)) { //Scale the object
instance.transform.localScale += instance.transform.localScale * (Time.deltaTime * speed);
}
if(Input.GetKeyUp(KeyCode.Z)) //To deactivate the prefab
{
// make sure to reset the scale!
instance.transform.localScale = Vector3.one;
instance.SetActive(false);
}
}