You are correct that Python is using pointers "under the hood", and yes, this is a feature. I don't know for sure why they did it this way- I assume it was for speed and to reduce memory usage.
This issue is, by the way, why it is critical to understand the distinction between shallow copies and deep copies.