Edit: Just read KasperG's post.
He's right. The player will 'float' over obstacles below a certain height, while pushables will be stopped even by 1 unit high borders.
This should work.
HL has three different clipping hulls:
1. Player sized hull. This hull is extruded from the actually visible stuff. This way the player can be treated as a point for collsion-determining, instead of a box. The old extrusion algos were quite buggy - maybe you remeber those 'sticky edges'.
2. Player ducked sized hull. Same like above, but for the player when he's crouched.
3. Point hull. This hull is as large as the stuff you see. It's used for point-sized object to determine collision. Bullets, snarks, beams etc.
(hull no. 0 is the visible hull)
For any pushable object, you can decide which of these 3 hulls it will use.
Here comes the tricky part:
The clip brush affect both player hulls, but leaves the point hull unchanged. Normal walls affect all hulls.
So you could do exactly the opposite.
One possibility:
Make the slopes obstruct nothing, by either using translucent textures (start with @), or use func_illusionaries.
Then use clip brushes to model the sloped hull for the player.
Make the func_pushable use the point hull. BUT this will cause the crate to partially intersect with walls.
This will only work if the walls for the crate are covered by the walls for the player.
Other possibility:
I'm not sure if this works.
You can define a certain hull-file to be used instead of letting the compile tools create it.
Make a map with the hull for the crate and one with the hull for the player. Then find the hull files and see if you can mix them. If you can define one hull file for each hull, you can skip the mixing step.
It's very tricky, but maybe it works.
If not you'll have to find a different way to do it.